ヘッダーをスキップ
Oracle XML Developer's Kitプログラマーズ・ガイド
10gリリース3(10.1.3)
B28611-01
  目次
目次
索引
索引

戻る
戻る
次へ
次へ
 

12 TransX Utility

この章の内容は次のとおりです。

TransX Utilityの概要

TransX Utilityは、翻訳されたシード・データおよびメッセージのデータベースへのロードを簡略化します。また、次の方法でグローバリゼーションのコストも削減します。

TransX Utilityは翻訳データ形式エラーを最小限に抑え、データベース内の事前に指定された場所に翻訳コンテンツを正確にロードします。次にTransX Utilityのその他の利点を示します。

翻訳されたメッセージやシード・データのロードが必要な開発グループは、TransX Utilityを使用して、グローバリゼーションの要件に合うように必要事項を簡素化できます。データが事前定義済の形式になると、TransX Utilityはその形式を検証します。

TransXでロードする場合、エンコーディングを記述するXMLを利用するため、翻訳されたデータをロードするときの正しいエンコーディングの選択が自動化されます。これは、データ・ファイルがXML標準に準拠しているかぎり、不適切なエンコーディングによるロード時のエラーは発生しないということです。

TransX Utilityの主な機能

この項では、TransX Utilityが持つ次の機能について説明します。

多言語データ・ロードの簡略化

従来、通常の翻訳データのロード方法では、ロードするファイルを切り替えるときにNLS_LANGの設定を切り替えていました。各ロード・ファイルは、特定の言語に適したそれぞれのキャラクタ・セットでエンコードされます。元のファイルと同じファイル形式(SQLスクリプトが一般的)で翻訳を実行する必要があるため、エンコードが必要とされました。

NLS_LANGの設定は、ファイルが言語に対応したキャラクタ・セットに適した形でロードされると同時に変更されます。TransX Utilityのロード・ツールを使用すると、開発グループおよび翻訳グループは、XMLを使用してデータベースにデータを正常にロードするまでのプロセスで正しいキャラクタ・セットを維持する必要がなくなります。

簡易データ形式のサポートおよびインタフェース

TransX Utilityのデータ・ロード・ツールは、データベースにロードされるシード・データを表す正規の方法として定義されたデータ形式に準拠します。これは直感的で理解しやすい形式です。また、翻訳グループが使用するように簡略化されています。フォーマット仕様は、データをロードするための、翻訳者によるデータの記述方法を定義します。

このデータ・ロード・ツールには、コマンドライン・インタフェースおよびプログラム可能なAPIがあります。どちらも簡単で、習得のための時間はほとんど必要ありません。

標準XML形式でのデータセットのロード

正規の形式でデータセット(入力データ)を指定すると、そのデータは、TransX Utilityによってデータベース内の指定された場所にロードされます。ただし、データをロードする表などのオブジェクトは作成しません。XMLで表すリテラル値の他に、次の式を使用してロードするデータを記述できます。

定数式

定数式では、定数値を指定できます。各行に固定値を持つ列では、同じ値を繰り返す必要はありません。

順序

データベース内の順序から取得した値を使用して列をロードできます。

問合せ

SQL問合せを使用して列をロードできます。問合せではパラメータを使用できます。

既存データの処理

データ・ロード・ツールは、データベースに重複行があるかどうかを判断します。このツールによる重複行の処理方法を、次に示すいずれかのオプションから選択することもできます。検索キーとして指定したすべての列の値が同じである場合、重複行とみなされます。処理オプションは次のとおりです。

  • 重複行をスキップするか、そのままの状態にします(デフォルト)。

  • 指定したデータセットのデータで重複行を更新または上書きします。

  • エラーを表示します。

TransX Utilityのその他の機能

TransX Utilityのその他の機能について説明します。

  • コマンドライン・インタフェース - データ・ロード・ツールは使用しやすいコマンドを提供します。

  • ユーザーAPI - データ・ロード・ツールはJava APIを表示します。

  • 検証 - データ・ロード・ツールはデータ形式を検証し、エラーをレポートします。

  • 空白の処理 - 特に指定されていないかぎり、データセットに含まれる空白文字は有効ではありません。

  • アンロード - データ・ロード・ツールは、問合せに基づいて結果を標準データ形式にエクスポートします。

  • 翻訳交換フォーマットとの親和性 - 翻訳交換フォーマットとの間で変換を行います。

  • ローカライズされたユーザー・インタフェース - 多数の言語でメッセージを表示します。

TransX Utilityのインストール

ここではTransXのインストール方法と、TransXの依存性について説明します。

TransXの依存性

Oracle TransX Utilityが機能するには、次のコンポーネントが必要です。

  • データベースの接続性 -- JDBCドライバ。このユーティリティはすべてのJDBCドライバとともに使用できますが、Oracle JDBCドライバとの使用が最適です。オラクル社では、Oracle以外のデータベースに対して実行しているTransXの保証やサポートは行いません。

  • XML Parser -- Oracle XML Parserバージョン2。Oracle XML Parserバージョン2は、Oracleデータベース・インストールの一部であり、Oracle Technology Network(OTN)のWebサイトから入手することもできます。

  • XML Schema Processor -- Oracle XML Schema Processor。Oracle XML Schema Processorは、Oracleデータベース・インストールの一部であり、Oracle Technology Network(OTN)のWebサイトからダウンロードできます。

  • XML SQL Utility-- Oracle XML SQL Utility(XSU)。Oracle XSUは、Oracleデータベース・インストールの一部であり、Oracle Technology Network(OTN)のWebサイトから入手することもできます。

Oracleインストーラを使用したTransXのインストール

TransXは、Oracleデータベースにパッケージ化されています。TransX Utilityは次の3つの実行ファイルで構成されています。

  • $ORACLE_HOME/rdbms/jlib/transx.zip -- TransX$ORACLE_HOME/rdbms/bin/transx(UNIXコマンドラインからTransXを起動するシェル・スクリプト)を構成するすべてのJavaクラスが含まれます。

  • $ORACLE_HOME\rdbms\bin\transx.bat -- WindowsコマンドラインからTransXを起動するバッチ・ファイル。

デフォルトでは、Oracleインストーラによって、前述の指定場所のハード・ドライブにTransXがインストールされます。

OTNからダウンロードしたTransXのインストール

Oracle Technology Networkから、正しいXDK Javaコンポーネント配布パッケージのアーカイブをダウンロードします。ダウンロードしたアーカイブを展開します。使用方法のシナリオに従い、次のインストール・タスクを実行します。

TransXのフロントエンドまたはJava APIを使用する手順:

env.xxxスクリプト(XDKダウンロード・アーカイブを抽出して作成されるディレクトリ内のbinディレクトリにある)を使用して、環境を設定します(CLASSPATHを設定します)。

UNIXユーザー: env.cshのパス名が正しいかどうかを確認して、次のように入力します。

source env.csh

cshまたはtcsh以外のシェルを使用している場合、そのシェルの構文を使用するにはファイルを編集する必要があります。

Windowsユーザー: env.batのパス名が正しいかどうかを確認して、ファイルを実行します。

TransX Utilityのコマンドライン構文

次に、TransX Utilityのコマンドライン構文を示します。

java oracle.xml.transx.loader [options] connect_string username password datasource [datasource]
java oracle.xml.transx.loader -v datasource [datasource]
java oracle.xml.transx.loader -x connect_string username password table [column]
java oracle.xml.transx.loader -s connect_string username password filename table [column]

TransX Utilityのコマンドラインの例

次に、TransX Utilityのコマンドラインの例を示します。

java oracle.xml.transx.loader "dlsun9999:1521:mydb" scott tiger foo.xml
java oracle.xml.transx.loader "jdbc:oracle:oci:@mydb" scott tiger foo.xml
java oracle.xml.transx.loader -v foo.xml
java oracle.xml.transx.loader -x "dlsun9999:1521:mydb" scott tiger emp
java oracle.xml.transx.loader -s "dlsun9999:1521:mydb" scott tiger emp.xml emp ename job

TransX Utilityコマンドライン・パラメータ

表12-1に、コマンドライン・パラメータを示します。

表12-1 TransX Utilityコマンドライン・パラメータ

パラメータ 意味
connect_string

JDBC接続文字列。@記号を使用して接続文字列情報を省略できます。jdbc:oracle:thin:@が指定されます。

username

データベース・ユーザー名。

password

データベース・ユーザー名のパスワード。

datasource

XMLデータ・ソース。

option

表12-2「TransX Utilityのコマンドライン・オプション」のオプション。


TransX Utilityのコマンドライン・オプション

表12-2 TransX Utilityのコマンドライン・オプション

オプション 意味 説明
-u

既存の行を更新します。

このオプションを指定すると、既存の行をスキップせずに更新します。更新操作の対象から列を除外するには、useforupdate属性をnoに指定します。

-e

行がデータベースにすでに存在する場合に例外を戻します。

このオプションを指定すると、重複行を検出した場合に例外が発生します。デフォルトでは、重複行をスキップします。データベースおよびデータセットの検索キー列(複数可)の値が同じ場合は、行が重複しているとみなします。

-x

データベースのデータを、事前定義済の形式で出力します。

-sオプションと同様に、TransXがロードと逆の操作を実行します。ただし、-sオプションとは異なり、stdoutに出力します。注意: この出力をファイルにリダイレクトする方法はお薦めしません。オペレーティング・システムの介入によって、予想外のトランスコーディングが発生してデータが失われる可能性があります。

-s

データベースのデータを、事前定義済の形式でファイルに保存します。

アンロードを実行するオプションです。このオプションはデータベースへの問合せを行って、その結果を事前定義済のXML形式にフォーマットし、指定したファイル名で格納します。

-p

ロードするXMLを出力します。

挿入するデータセットを正規のXSU形式で出力します。

-t

更新のためXMLを出力します。

更新するデータセットを正規のXSU形式で出力します。

-o

検証を省略します(デフォルトでは、データセットは解析時に検証されます)。

TransXが形式の検証(デフォルトでは実行される)をスキップします。

-v

データ形式を検証し、ロードせずに終了します。

TransXが検証を行って終了します。

-w

すべての空白を保持します。

TransXが空白文字(\t、\r、\n、' 'など)を重要であるとみなします。文字列データ要素内の連続する空白文字は、デフォルトでは1つの空白文字とみなされます。


コマンドライン・オプションの例外

次に、コマンドライン・オプションの例外を示します。

  • -u-eは、相互に排他的です。

  • -vは、次の例に示すとおり、後にデータを伴う唯一のオプションです。

  • -xは、次の例に示すとおり、後に接続情報およびSQL問合せを伴う唯一のオプションです。

すべての引数を省略すると、表に示したフロントエンドの使用方法の情報が表示されます。


関連資料:

TransX UtilityのJava APIの詳細は、『Oracle XML APIリファレンス』を参照してください。

TransX Utilityのサンプル・コード

次に、TransX Utilityのサンプル・コードを示します。

String  datasrc[] = {"data1.xml", "data2.xml", "data3.xml"};

// instantiate a loader
TransX  transx = loader.getLoader();

// start a data loading session
transx.open( jdbc_con_str, usr, pwd );

// specify operation modes
transx.setLoadingMode( LoadingMode.SKIP_DUPLICATES );
transx.setValidationMode( false );

// load the dataset(s)
for ( int i = 0 ; i < datasrc.length ; i++ )
{
transx.load( datasrc[i] );
}

// cleanup
transx.close();