C Oracle Data Integrator Driver for Complex Filesの参照情報
注意:
メモリー内エンジンの使用はベスト・プラクティスではなく、複合ファイル・テクノロジを使用したときに問題が発生する場合があります。
エラーの原因: メモリー内HSQLを本番で使用することはお薦めしません。ODIの範囲を超えてメモリー・リークが発生し、最終的にJVMが停止します。開発のみでの使用を対象としています。Oracle、MySQL、MS SQLServerなどの外部DBに切り替えることをお薦めします。
この付録の内容は次のとおりです。
Oracle Data Integrator Driver for Complex Filesの概要
Oracle Data Integrator Driver for Complex Files(複合ファイル・ドライバ)では、複合(またはネイティブ)フォーマットのファイルがJDBCデータソースとして処理されます。これにより、複合ファイルをOracle Data Integratorでデータ・サーバーとして使用することが可能になります。
複合ファイル・ドライバとともにOracle Data Integratorを使用すると、複合ファイルへの変更を標準のSQL構文で実行できます。これらの操作はトランザクション内で発生し、コミットまたはロールバックが可能です。
Oracle Data Integrator driver for Complex Filesでサポートされている機能は次のとおりです。
-
標準のSQL (Structured Query Language)構文
-
相関サブ問合せ、内部および外部結合
-
ORDER BYおよびGROUP BY
-
COUNT、SUM、MIN、MAX、AVGおよびその他のファンクション
-
標準のSQLファンクション
-
トランザクションの管理
-
参照整合性(外部キー)
-
変更の複合ファイルへの保存
複合ファイルの処理の概要
複合ファイル・ドライバでは、ネイティブ・スキーマ・ファイルを使用します。このファイルは、nXSD形式で記述され、ネイティブ・ファイルの構造およびネイティブ・ファイルをXMLファイルに変換する方法を示します。
複合ファイル・ドライバでは、ネイティブ・スキーマ(nXSD)の記述での定義に従い、ネイティブ・ファイルをXML構造に内部的に変換し、このXMLファイルから、Oracle Data Integratorによって消費されるリレーショナル・スキーマを生成します。図C-1に、全体的なメカニズムを示します。
XML構造から始まる処理の2番目の部分は、Oracle Data Integrator Driver for XMLの機能に正確に対応しています。
複合ファイル・ドライバは次のように機能します。
-
複合ファイルはネイティブ・スキーマ(nXSD)ファイルを使用して中間XMLファイルに変換されます。中間XMLファイルに対して物理ファイルは作成されず、ストリーミングXML構造が作成されることに注意してください。
-
ドライバは、XMLからSQLへのマッピングを使用して、XML構造およびデータをリレーショナル・スキーマにロードします。
-
ユーザーは、通常のSQL文、またはドライバ操作用の特定のドライバ・コマンドを介してデータを操作し、リレーショナル・スキーマを使用します。
-
複合ファイル・ドライバは、切断時またはユーザー・リクエストに応じて、スキーマに格納されているデータおよび構造を元の複合ファイルに同期化します。
ネイティブ・スキーマの生成
ネイティブ・スキーマは、手動で作成することも、Fusion Middlewareテクノロジ・アダプタの一部として利用可能なネイティブ・フォーマット・ビルダー・ウィザードを使用して生成することもできます。ネイティブ・スキーマ形式およびネイティブ・フォーマット・ビルダー・ウィザードの詳細は、テクノロジ・アダプタ・ユーザーズ・ガイドのネイティブ・フォーマット・ビルダー・ウィザードに関する項を参照してください。
XMLからSQLへのマッピング
XMLからSQLへのマッピングは複雑なプロセスで、階層構造(XML)をリレーショナル構造(スキーマ)にマップするために使用されます。このマッピングは自動的に行われます。詳細は、「XMLからSQLへのマッピング」を参照してください。
JSONのサポート
JSON形式のフラット・ファイルは、nXSD形式を介してサポートされています。nXSDファイルは、手動で作成することも、ネイティブ・フォーマット・ビルダー・ウィザードを使用して作成することもできます(詳細は、「ネイティブ・スキーマの生成」を参照してください)。nXSD注釈のないXSDファイルを使用する場合は、ドライバが入力ファイルの解析用にJSONトランスレータを使用できるように、追加のJDBCプロパティtt=json
またはtranslator_type=json
を指定する必要があります。
サポートされている機能
複合ファイル・ドライバは、XMLドライバと同じ機能をサポートしています。
-
組込みエンジンまたは外部データベースへのスキーマの格納が、XMLドライバと同じ方法でサポートされます。詳細は、「スキーマの格納」および「外部データベースを使用したデータの格納」を参照してください。
-
複数のスキーマがサポートされ、次の点が異なります。
-
接続時には、ネイティブ・スキーマ・ファイルに基づいて、単一のスキーマのみを作成できます。
-
「複数のスキーマの自動作成」で示されている、接続時に複数のスキーマの作成を可能にするパラメータはサポートされていません。これには、add_schema_bundle、add_schema_pathおよびaddschema_Xが含まれます。
-
接続後、CREATE SCHEMAおよびLOAD FILEコマンドを使用して追加のスキーマを作成できます。
-
-
XMLドライバと同様に、大/小文字の区別が管理されます。詳細は、「大/小文字の区別」を参照してください。
-
複合ファイル・ドライバでのロード/同期化は、XMLドライバと同じように機能します。ロード/同期化操作はネイティブ・ファイルに自動的に伝播します。詳細は、「ロード/同期化」を参照してください。
-
ロックがサポートされています。複合ファイルは接続時にロックされ、切断時にロック解除されます。UNLOCK FILEコマンドがサポートされています。
ドライバの構成
Oracle Data Integrator driver for Complex Filesは、Oracle Data Integratorとともに自動的にインストールされます。次の各項では、拡張構成の説明および参照情報を示します。
この項ではドライバの構成について説明します。
-
ドライバ名:
oracle.odi.jdbc.driver.file.complex.ComplexFileDriver
-
URL構文:
jdbc:snps:complexfile?f=<native file location>&d=<native schema>&re=<root element name>[&s=<schema name>&<property>=<value>...]
URLのプロパティの詳細は、Oracle Data Integrator Driver for Complex Filesの参照情報を参照してください。
表C-1 ドライバのプロパティ
プロパティ | 必須 | タイプ | デフォルト | 説明 |
---|---|---|---|---|
fileまたはf |
はい |
文字列(ファイルの場所) |
- |
ネイティブ・ファイルの場所。パス名には、バックスラッシュ"\"ではなくスラッシュ"/"を使用します。HTTP、FTPまたはファイルのURLを使用してファイルの場所を示すことができます。URLによって示されたファイルは読取り専用です。このパラメータは必須です。 |
dtdまたはd |
はい |
文字列(ファイルの場所) |
- |
ネイティブ・スキーマ(nXSD)ファイルの場所。このパラメータは必須です。 |
root_eltまたはre |
はい |
文字列 |
- |
スキーマのルート表として選択する要素の名前。この値では大/小文字が区別されます。このプロパティは、ネイティブ・スキーマの特定のセクションなどのリバース・エンジニアリングに使用できます。このパラメータは必須です。 |
read_onlyまたはro |
いいえ |
ブール値(true|false) |
false |
ネイティブ・ファイルを読取り専用モードで開きます。 |
schemaまたはs |
いいえ |
文字列 |
- |
複合ファイルのロード先となるリレーショナル・スキーマの名前。このパラメータは必須です。 このスキーマは、複合ファイル・データ・サーバーの下に物理スキーマを作成する際に選択されます。 注意: スキーマへの接続を複数作成することはできません。すでに使用中のスキーマに接続しようとした場合、後続の接続は失敗します。 重要: スキーマ名は大文字で指定する必要があります。既存のXML要素と似た名前を付けることはできません。 |
standalone |
いいえ |
ブール値(true|false) |
false |
このオプションをtrueに設定すると、この接続のスキーマは、他のすべてのスキーマから完全に分離されます。このオプションでは、各スキーマを分離したまま複数の接続に対して同じスキーマ名を指定できます。このオプションを使用すると、このスキーマの表に他のスキーマからアクセスできません。また、この接続で他のスキーマの表にもアクセスできません。 注意: このオプションは、外部データベースを使用する場合には適用できません。 |
translator_typeまたはtt |
いいえ |
文字列(json) |
- |
このオプションをjsonに設定した場合、xsdではnXSD注釈が不要になり、入力ファイルの解析用にJSONトランスレータが自動的に使用されます。 |
db_propsまたはdp |
いいえ |
文字列 |
- |
このプロパティは、メモリー・エンジンのかわりに外部データベースを使用してスキーマを格納するために使用します。 詳細は、「外部データベースを使用したデータの格納」を参照してください。 |
load_data_on_connectまたはldoc |
いいえ |
ブール値(true|false) |
true |
JDBC接続の実行時に、スキーマにデータを自動的にロードします。falseに設定した場合は、接続後にSYNCHRONIZE文を使用してデータをロードする必要があります。 このオプションは、すべてのデータをロードせずに接続をテストしたりメタデータを参照するのに役立ちます。 |
drop_on_disconnectまたはdod |
いいえ |
ブール値(true|false) |
false |
JDBC接続を閉じるとき、スキーマを自動的にドロップします。 trueの場合、スキーマは組込みエンジンに格納され、常にドロップされます。 スキーマが外部データベースに格納されている場合、ドライバはデータベース・スキーマのドロップを試行しますが、このスキーマ内に表がまだ存在していると失敗する可能性があります。スキーマのドロップ時に自動的にすべての表が確実にドロップされるようにするには、外部データベースのプロパティ・ファイルでdrop_tables_on_drop_schemaプロパティを指定します。詳細は、「外部データベースを使用したデータの格納」を参照してください。 |
useimplicitmaxvalue |
いいえ |
ブール値(true|false) |
false |
このプロパティをtrueに設定した場合、スキーマでmaxOccursが指定されていない要素は、maxOccurs ="unbounded"とみなされます。それ以外の場合、maxOccursが指定されていない要素はmaxOccurs=1とみなされます。 |
java_encodingまたはje |
いいえ |
文字列(エンコーディング・コード) |
UTF8 |
ターゲット・ファイルのエンコーディング(例: |
numeric_idsまたはni |
いいえ |
ブール値(true|false) |
true |
trueに設定すると、すべての内部の主キーおよび外部キーがNUMERIC型になります。それ以外の場合はVARCHAR型になります。 |
id_lengthまたはil |
いいえ |
整数 |
10 / 30 |
内部の主キーおよび外部キーの列の長さ。デフォルトは、列型がNUMERICの場合は10、VARCHARの場合は30です。 |
numeric_scaleまたはns |
いいえ |
整数 |
空白 |
リレーショナル・スキーマで生成される数値列のスケール。 |
no_batch_updateまたはnobu |
いいえ |
ブール値(true|false) |
false |
この接続にはバッチ更新は使用されません。バッチ更新を設定するコマンドは送信されません。これにより、このJDBC機能をサポートしていない外部データベースに関するエラーの発生を回避し、バッチ更新の使用に関するエラーをデバッグできます。 |
transform_nonasciiまたはtna |
いいえ |
ブール値(true|false) |
true |
非ASCIIを変換します。非ASCII文字を保持するにはfalseに設定します。 |
これらのプロパティを次の例に示します。
products.nxsd
によって説明されるPROD20100125_001.csv
ファイルに接続し、このファイルをリレーショナル構造としてPRODUCTスキーマで公開します。
jdbc:snps:complexfile?f=/infiles/PROD20100125_001.csv&d=/infiles/products.nxsd&re=root&s=PRODUCTS
ドライバ・コマンドの詳細
複合ファイル・ドライバは、XMLドライバと同じドライバ・コマンドをサポートしています。XMLドライバでサポートされているドライバ・コマンドの詳細は、「ドライバ・コマンドの詳細」を参照してください。
このルールには次の例外があります。
-
複合ファイル・ドライバの構文では、CREATE FILEやLOAD FILEなどのXMLファイルに関連するコマンドは、ネイティブ・ファイルに適用されます。たとえば、コマンドCREATE FILEによって、スキーマ・コンテンツからネイティブ・フォーマット・ファイルが作成されます。
-
VALIDATEはサポートされていません。
-
CREATE FILEはサポートされていますが、NO_CLOSING_TAGSおよびNO_DEFAULT_NSパラメータは無視されます。
-
CREATE SCHEMAには、WITH DTDパラメータが必要です。
-
LOAD FILEには、WITH DTDパラメータが必要です。