ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Data Integrator接続およびナレッジ・モジュール・ガイド
11g リリース1(11.1.1)
B62261-04
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

B Oracle Data Integrator Driver for XMLの参照情報

この付録では、Oracle Data Integrator driver for XMLの使用方法を説明します。

この付録には次の項が含まれます:

B.1 Oracle Data Integrator Driver for XMLの概要

Oracle Data Integrator Driver for XML(XMLドライバ)では、XMLドキュメントがJDBCデータソースとして処理されます。これにより、XMLドキュメントをOracle Data Integratorでデータ・サーバーとして使用することが可能になります。

Oracle Data Integrator Driver for XMLとともにOracle Data Integrator使用すると、XMLファイルへの変更を標準のSQL構文で実行できます。これらの操作はトランザクション内で発生し、コミットまたはロールバックが可能です。

Oracle Data Integrator driver for XMLでサポートされている機能は次のとおりです。

B.2 XMLの処理の概要

XMLドライバは次のように機能します。

  1. ドライバは、XMLからSQLへのマッピングを使用して、(接続時またはユーザー・リクエストに応じて)XML構造およびデータをリレーショナル・スキーマにロードします。

  2. ユーザーは、通常のSQL文、またはドライバ操作用の特定のドライバ・コマンドを介してデータを操作し、リレーショナル・スキーマを使用します。

  3. XMLドライバは、切断時またはユーザー・リクエストに応じて、スキーマに格納されているデータおよび構造を元のXMLファイルに同期化します

B.2.1 XMLからSQLへのマッピング

XMLからSQLへのマッピングは複雑なプロセスで、階層構造(XML)をリレーショナル構造(スキーマ)にマップするために使用されます。このマッピングは自動的に行われます。

要素および属性のマッピング

XMLドライバでは、XMLの要素および属性が次のようにマップされます。

  • 要素は、同じ名前の表としてマップされます。

  • 属性は、属性と似た名前の列としてマップされます。各列は、属性の要素を表す表内に作成されます。

階層および順序のマッピング

次のように、リレーショナル構造には追加のデータが表示されます。

  • XML要素の階層、または要素間の1対多関係をマップするために、要素に対応するそれぞれの表には、XMLドライバによって次のような追加の列が生成されます。

    • <element_name>PK: 要素を識別するための列です。

    • <parent_element_name>FK: 階層内で現在の要素を親とリンクするための列です。親要素の<element_name>PK値と一致する値が含まれます。

  • XMLファイルの要素とは異なり、(特定の列を使用して順序を定義していないかぎり)表のレコードは順序付けされません。要素の順序を保持するために、ドライバでは<element_name>ORDERという名前の列も生成されます。リレーショナル・スキーマに新しい行を追加する場合は、親要素の下に要素が正しく順序付けされるように、ORDER列が正しく設定されていることを確認してください。

  • 階層のルートは、ルート要素と同じ名前のルート表によって識別されます。この表には、単一のレコードおよび次の列が含まれます。

    • <root_element_name>PK: レベル1のすべてのサブ要素は、このPKエントリを参照します。

    • SNPSFILENAME: この列には、このスキーマにロードされたXMLファイルの名前が含まれます。

    • SNPSFILEPATH: この列には、XMLファイルのパスが含まれます。

    • SNPSLOADDATE: この列には、ファイルがスキーマにロードされた日時が含まれます。

    この表の値はドライバによって管理されるため、変更しないでください。

マッピング例外

この項では、追加のデータのマッピングに関する特定の状況について説明します。

  • #PCDATAのみを含む要素は、表としてはマップされず、それぞれの親要素を表す表の列としてマップされます。これらの列は、<element_name>DATAという名前になります。

  • リスト属性は、リンク(PK、FK)を含む新しい表として、リストが含まれている要素を表す表にマップされます。

  • 表名または列名とSQL予約キーワードとの間の名前の競合を回避するために、SQL予約キーワードと名前が一致するXML要素および属性の名前は、リレーショナル構造内で自動的に変更されます(名前の後にアンダースコアが追加されます)。たとえば、SELECTという名前の要素はSELECT_という名前の表にマップされます。同期化操作の実行時には、これらの要素が元の名前でXMLファイルにリストアされます。

ドライバによって作成される追加のオブジェクトは、XMLファイルの整合性を保つために使用されます。XMLファイルと同期化させるには、これらのレコードをリレーショナル・スキーマにロードする必要があります。

B.2.2 XML名前空間

XMLドライバでは、XMLの属性および要素に対して指定されるXML名前空間(xmlns:)がサポートされています。

構文<namespace>:<element or attribute name>を使用して名前空間とともに指定された要素または属性は、構文<namespace>_<element or attribute name>を使用して、名前空間を接頭辞とする表または列としてマップされます。XMLデータを元のファイルに同期化する際には、名前空間の情報が自動的に生成されます。

B.2.3 スキーマの管理

スキーマは、一連のリレーショナル表を保持するコンテナであり、Oracleデータベースおよび他のRDBMシステムで使用される概念に対応します。各スキーマは、一連のXMLファイル・インスタンス全体を正常に解析して抽出できる、1つの汎用リレーショナル構造です。識別された要素および属性は、適切なリレーショナル表およびフィールドに挿入されます。

このスキーマは、XMLドライバによって、XMLインスタンス・ファイル、DTDファイルまたはXSDファイルから生成されます。DTDまたはXSDファイルからスキーマを生成することをお薦めします。

XMLデータ・サーバーURLの定義で参照できるのは、単一のDTDまたはXSDファイルのみです。そのため、アーティファクトに他のDTDまたはXSDファイルへの参照が含まれる場合は、このDTDまたはXSDがマスターDTDまたはXSDファイルとみなされます。状況によっては、複数のスキーマが必要になる可能性があります。その場合は、add_schema_bundleプロパティを使用してください。

B.2.3.1 スキーマの格納

スキーマは、組込みエンジンまたは外部データベースに格納できます。

  • 組込みエンジンの場合、その他のコンポーネントを実行する必要はありません。XMLスキーマはドライバ内のメモリーに格納されます。このドライバで使用できるSQLコマンドおよびファンクションの詳細は、「SQL構文」を参照してください。

  • 外部データベースとして、リレーショナル・データベース管理システムを使用できます。ドライバは、JDBCを介してこのエンジンに接続し、スキーマの格納に使用します。これによって、次のことが可能になります。

    • RDBMSエンジンの処理および格納能力の利用

    • RDBMSの文およびファンクションの利用

    • スキーマの格納の持続

    詳細は、B.3.3項「外部データベースを使用したデータの格納」を参照してください。

B.2.3.2 複数のスキーマ

同じJDBC接続で、複数のスキーマを処理して複数のXMLファイルに同時にロードできます。スキーマのCREATE、TRUNCATE、SETおよびLOAD FILE INTO操作を実行できます。JDBCドライバに接続すると、URLで指定されたスキーマに接続します。SET SCHEMAコマンドを使用すると、現在のスキーマを別のスキーマに設定できます。詳細は、B.4項「ドライバ・コマンドの詳細」を参照してください。

デフォルト・スキーマは、一時データの格納に使用される特定のスキーマです。XMLファイルを格納するためにデフォルト・スキーマを使用することは(技術的には可能ですが)、お薦めしません。各XMLファイルに対して1つのスキーマを作成することをお薦めします。

ドライバへの接続の作成時に、XML構造が異なる追加のスキーマを自動的に作成することもできます。詳細は、B.3.1項「ドライバの構成」を参照してください。

B.2.3.3 スキーマ内のデータへのアクセス

スキーマ内のデータはSQL言語を使用して処理されます。

現在のスキーマとは別のスキーマ内の表にアクセスできます。別のスキーマの表にアクセスするには、表名の先頭にスキーマ名およびピリオド(.)を付けます。次に例を示します。

SELECT col1, schema2.table2.col2, table1.col3 FROM table1, schema2.table2.

この問合せでは、現在のスキーマのtable1、およびschema2のtable2からデータが戻されます。


注意:

他方のスキーマも現在のスキーマと同じ記憶領域(組込みエンジンまたは外部データベース)に格納されている必要があります。


B.2.3.4 大/小文字の区別

スキーマでは大/小文字を区別できません。スキーマ内の要素(表および列)は、すべて大文字で表記されます。XMLファイルの要素名に小文字が含まれている場合、これらの文字は大文字に変換されます。要素がXMLファイルに同期化される際には、これらの名前が元の大/小文字を使用して作成されます。

B.2.3.5 ロード/同期化

通常、スキーマはXMLファイルへの接続時に自動的に作成され、XMLファイルに含まれているデータとともにロードされます。特定のドライバ・コマンドを使用して、スキーマの作成およびスキーマ内のデータ・ロードを強制的に実行できます。詳細は、B.4項「ドライバ・コマンドの詳細」を参照してください。データの同期化プロセスも、SYNCHRONIZEコマンドを使用して強制的に実行できます。詳細は、B.4.9項「SYNCHRONIZE」を参照してください。

B.2.4 ロック

ドライバは、XMLファイルにアクセスする際にファイルをロックして、他のドライバ・インスタンスがそのファイルに接続するのを防ぎます。ロック・ファイルの名前はXMLファイルと同じですが、拡張子.lckが使用されます。

ドライバが不正に切断された場合、ファイルがロックされたままになることがあります。このロックを削除するには、.lckファイルを削除します。UNLOCK FILEコマンドを使用して、XMLファイルのロックを解除することもできます。

B.2.5 XMLスキーマ(XSD)のサポート

XMLドライバでは、XMLファイルの構造を記述するためにXSDがサポートされています。詳細は、B.7項「サポートされているXMLスキーマの機能」を参照してください。

また、XMLドライバでは、XMLファイル内で指定されたXSDスキーマに対するドキュメントの検証もサポートされています。この操作は、ドライバ固有のVALIDATEコマンドでも実行できます。

B.3 インストールおよび構成

Oracle Data Integrator driver for XMLは、Oracle Data Integratorとともに自動的にインストールされます。次の各項では、拡張構成の説明および参照情報を示します。

この項には次のトピックが含まれます:


注意:

外部データベース記憶域を使用する場合は、さらに、外部データベースへの接続に使用するJDBCドライバおよび.propertiesファイルをクラスパスに含めておく必要があります。


B.3.1 ドライバの構成

この項ではドライバの構成について説明します。

  • ドライバ名: com.sunopsis.jdbc.driver.xml.SnpsXmlDriver

  • URL構文: jdbc:snps:xml?f=<filename>[&s=<schema>&<property>=<value>...]

URLのプロパティの詳細を表B-1に示します。

表B-1 ドライバのプロパティ

プロパティ 必須 種類 デフォルト 説明

fileまたはf

はい

文字列(ファイルの場所)

-

XMLファイル名。パス名には、バックスラッシュ"\"ではなくスラッシュ"/"を使用します。HTTP、FTPまたはファイルのURLを使用してファイルの場所を示すことができます。URLによって示されたファイルは読取り専用です。

XMLファイルの場合、このプロパティが欠落していると、XMLドライバによってリレーショナル・スキーマがDTD/XSDファイルに基づいて作成され、XMLファイルの検索は行われません。

dtdまたはd

いいえ

文字列(ファイルの場所)

-

記述ファイル。このファイルはDTDまたはXSDファイルです。HTTP、FTPまたはファイルのURLを使用してファイルの場所を示すことができます。URLによって示されたファイルは読取り専用です。

URLで指定されているDTDまたはXSDファイルは、XMLファイル内で指定されているDTDまたはXSDファイルより優先されます。参照は、絶対パスを使用して作成する必要があります。

XMLファイルに関してこのプロパティが欠落しており、XMLファイル内でもDTDまたはXSDが参照されていない場合、ドライバでは、XMLファイルに似た名前に拡張子.dtdの付いたものがDTDファイル名であると自動的にみなされます。

generate_dtd URLプロパティの設定によっては、DTDファイルがXMLファイル構造に基づいて作成される場合があります。

DTDまたはXSDファイルが存在しない場合、リレーショナル構造はXMLファイルの内容のみを使用して構築されます。DTDまたはXSDに記述されている使用可能な要素が1つのXMLファイル・インスタンスにすべて含まれていないことで、データ・モデルが不完全になる可能性があるため、このような構造からデータ・モデルをリバース・エンジニアリングすることはお薦めしません。

root_eltまたはre

いいえ

文字列

-

スキーマのルート表として選択する要素の名前。この値では大/小文字が区別されます。このプロパティは、WSDLファイルから特定のメッセージ定義をリバース・エンジニアリングする場合や、使用可能なルート要素がXSDファイル内に複数存在する場合などに使用できます。

重要: このプロパティは、XMLインスタンス・ファイルのルート要素のルート要素定義として機能する、XSDまたはDTDファイルの要素の指定のみに使用されます。

read_onlyまたはro

いいえ

ブール値(true | false)

false

XMLファイルを読取り専用モードで開きます。

schemaまたはs

いいえ

文字列

-

XMLファイルのロード先となるスキーマの名前。このプロパティが欠落している場合は、XMLファイル名に基づいて、スキーマ名が自動的に生成されます。

XMLデータ・サーバーのURLでこのプロパティが指定されていない場合は、XMLドライバによってスキーマ名が自動的に作成されます。このスキーマの名前として、XMLファイル名の最初の5文字が使用されます。

注意: スキーマへの接続を複数作成することはできません。すでに使用中のスキーマに接続しようとした場合、後続の接続は失敗します。

重要: スキーマ名は大文字で指定する必要があります。

重要: XML要素名と同じスキーマ名を使用することは禁止されています。

standalone

いいえ

ブール値(true | false)

false

このオプションをtrueに設定すると、この接続のスキーマは、他のすべてのスキーマから完全に分離されます。このオプションでは、各スキーマを分離したまま複数の接続に対して同じスキーマ名を指定できます。このオプションを使用すると、このスキーマの表に他のスキーマからアクセスできません。また、この接続で他のスキーマの表にもアクセスできません。スキーマは、この接続のみに制限されます。他の接続ではこのスキーマを認識できません。

同じトポロジを持つ複数のパラレル・ジョブで、ジョブが相互に重複することを回避するのに役立ちます。

ns_prefix_generationまたはnspg

いいえ

auto | xml | xsd

auto

このオプションは、名前空間接頭辞の生成方法およびXMLファイルへの書込み方法を定義します。

  • auto(デフォルト): 接頭辞は、可能な場合は名前空間名自体から自動的に生成され、それ以外の場合はns1、ns2のように生成されます。

  • xml: 名前空間接頭辞は、ソースXMLファイルから取得されます(存在する場合)。

  • xsd: 名前空間接頭辞は、XSDファイルから取得されます(存在する場合)。

xsdオプション値は、複数のXSDファイルで異なる名前空間を参照するために、類似した接頭辞が使用されていないことを前提としています。

no_default_nsまたはndns

いいえ

ブール値(true | false)

false

このプロパティをtrueに設定すると、デフォルトの名前空間エントリがないターゲット・ファイルが生成されます。

no_closing_tagsまたはnct

いいえ

ブール値(true | false)

false

このプロパティをtrueに設定すると、終了タグのない空のタグが生成されます(例: <element/>)。falseに設定すると、空の要素が<element></element>のように生成されます。v1_compatibilityプロパティを使用している場合、このプロパティはデフォルトでtrueになります。

db_propsまたはdp

いいえ

文字列

-

このプロパティは、メモリー・エンジンのかわりに外部データベースを使用してスキーマを格納するために使用します。

db_propsプロパティは、db_propsプロパティと似た名前で拡張子が.properties外部データベース・プロパティ・ファイルに接続情報が格納されているデータベース・スキーマに、スキーマをロードする必要があることを示します。このプロパティ・ファイルは、アプリケーションのクラスパスに配置する必要があります。

load_data_on_connectまたはldoc

いいえ

ブール値(true | false)

true

JDBC接続の実行時に、スキーマにデータを自動的にロードします。falseに設定した場合は、接続後にSYNCHRONIZE文を使用してデータをロードする必要があります。

このオプションは、すべてのデータをロードせずに接続をテストしたりメタデータを参照するのに役立ちます。

drop_on_discまたはdod

いいえ

ブール値(true | false)

false

JDBC接続を閉じる際に、スキーマを自動的にドロップします。

trueの場合、スキーマは組込みエンジンに格納され、常にドロップされます。

trueで、かつ、データが外部データベースにある場合、メモリー内のスキーマへの現在の参照のみがドロップされ、表は外部データベースに残ります。このことは、このスキーマに再度接続しようとすると、(データがメモリーにロードされるときのように)最初から開始するのではなく、外部データベース内の表が再利用されることを意味します。

ignore_unknown_elementsまたはiue

いいえ

ブール値(true | false)

false

関連付けられているDTD (Document Type Definition)またはXSD (XMLスキーマ定義)ファイルには存在しないXMLファイルの要素をすべて無視します。

useMaxValue

いいえ

ブール値(true | false)

false

このプロパティをtrueに設定した場合、XSDでmaxOccursが指定されていない要素は、maxOccurs ="unbounded"とみなされます。それ以外の場合、maxOccursが指定されていない要素はmaxOccurs=1とみなされます。

generate_dtdまたはgd

いいえ

yes | no | auto

auto

XMLファイルの構造に基づいてDTDファイルを作成する必要があるかどうかを定義します。

  • auto: DTDファイルが存在しない場合はこれを作成し、存在する場合は何も実行しません。

  • yes: 常にDTDファイルを作成します。既存のDTDファイルは上書きされます。

  • no: 状況にかかわらずDTDファイルを作成しません。DTDファイルが存在する必要があります。

警告: このオプションを使用して作成されたDTDファイルには、XMLファイルに出現するXML要素の定義のみが含まれるため、完全でない可能性があります。

java_encodingまたはje

いいえ

文字列(エンコーディング・コード)

UTF8

ターゲット・ファイルのエンコーディング(例: ISO8859_1)。サポートされているエンコーディングのリストは、次のURLにあります。http://download.oracle.com/javase/6/docs/technotes/guides/intl/encoding.doc.html

Javaエンコーディングを指定する場合は、XMLエンコーディングも指定する必要があります。

xml_encodingまたはxe

いいえ

文字列(エンコーディング・コード)

UTF8

生成されたXMLファイル内に、ISO-8859-1: <?xml version="1.0" encoding="ISO-8859-1"?>などのタグで指定されるエンコーディング。サポートされているエンコーディングのリストは、次のURLにあります。http://download.oracle.com/javase/6/docs/technotes/guides/intl/encoding.doc.html

XMLエンコーディングを指定する場合は、Javaエンコーディングも指定する必要があります。

v1_compatibilityまたはv1

いいえ

ブール値(true | false)

false

このプロパティをtrueに設定すると、XMLからSQLへのマッピングがバージョン1.xのように実行されます。このプロパティは互換性のために提供されています。

numeric_idまたはni

いいえ

ブール値(true | false)

true

trueに設定すると、すべての内部の主キーおよび外部キーがNUMERIC型になります。それ以外の場合はVARCHAR型になります。

id_lengthまたはil

いいえ

整数

10 / 30

内部の主キーおよび外部キーの列の長さ。デフォルトは、列型がNUMERICの場合は10、VARCHARの場合は30です。

numeric_scaleまたはns

いいえ

整数

XMLからSQLへのマッピング時に生成される数値列のスケール。

no_batch_updateまたはnobu

いいえ

ブール値(true | false)

false

この接続にはバッチ更新は使用されません。バッチ更新を設定するコマンドは送信されません。これにより、このJDBC機能をサポートしていない外部データベースに関するエラーの発生を回避し、バッチ更新の使用に関するエラーをデバッグできます。

add_schema_bundleまたはasb

いいえ

文字列

-

追加のスキーマ・バンドル・ファイル。このプロパティは、接続時に追加のスキーマを作成する必要があることを示します。これらの追加のスキーマに関する記述は、add_schema_bundleプロパティに拡張子.propertiesが付いた名前の追加のスキーマ・プロパティ・ファイルに含まれます。追加のスキーマ・プロパティ・ファイルには、有効なJDBCドライバのURLのリストが含まれます。このファイルでは、プロパティ名は無視されます。値のリストのみが考慮されます。

これらの追加のスキーマはすべて、drop_on_disconnectオプションがデフォルトでtrueに設定された状態で作成されます。

追加のスキーマ・プロパティ・ファイルの内容は、たとえば次のようになります。

addschema_1=jdbc:snps:xml?f=c:/myfile.xml&ro=true&s=myschema1 addschema_2=jdbc:snps:xml?file=c:/myfile2.xml&s=myschema2 addschema_3=jdbc:snps:xml?d=c:/myfile3.dtd&s=myschema3

add_schema_pathまたはasp

いいえ

文字列(ディレクトリ)

-

一連のXSDファイルを含むディレクトリ。このディレクトリの各XSDファイルに対し、そのXSDに基づいて組込みエンジンまたは外部データベース記憶域に追加のスキーマが作成されます。これらの追加のスキーマに対するオブジェクトは、外部データベース記憶域には作成されません。スキーマ名は、生成されるデフォルト名です(ファイル名の最初の5文字を大文字で表記)。

log_fileまたはlf

いいえ

文字列(ファイルの場所)

-

ログ・ファイルの名前。ログ・ファイル値が空の場合は、トレースが標準の出力に表示されます。

このプロパティが存在することで、スキーマのトレースがトリガーされます。それぞれのスキーマに異なるトレース・ファイルを使用できます。

log_levelまたはll

いいえ

整数

-

ログ・レベル。ログ・レベルは次の値のマスクです。

  • 1: 重要な内部イベント

  • 2: 詳細な内部イベント

  • 4: ネイティブSQLコマンド

  • 8: XMLリレーショナル・マッピング計算

  • 16: XMLリレーショナル・マッピング検証(表名の変更など)

例:

  • 重要および詳細な内部イベントのトレース: log_level=3 (1+2)

  • ネイティブSQLコマンドおよび重要な内部イベントのトレース: log_level=5 (1+4)

  • XMLリレーショナル・マッピングの計算および検証のトレース: log_level=24 (16+8)

  • すべてのイベントのトレース: log_level=31 (1+2+4+8+16)

default_type_varcharまたはdtvc

いいえ

ブール値(true | false)

false

trueに設定すると、XMLアノテーションおよびドキュメント要素を格納する列のリレーショナル・スキーマで使用されるデフォルトのデータ型は、サイズ255のVARCHARとなります。この列の長さはdlvcプロパティを使用して指定します。falseに設定すると、LONGデータ型となります(使用されている場合)。Oracleなどの、同じ表内で複数のLONG列がサポートされていないテクノロジでは、このプロパティをyesに設定する必要があります。

default_length_varcharまたは

dlvc

いいえ

整数

255

XMLアノテーションおよびドキュメント要素の格納に使用されるVARCHAR列のデフォルトの長さ。このプロパティは、dtvcがyesに設定されている場合にのみ有効となります。次に例を示します。

default_length_varchar=2000 2000は、必要な新しいデフォルトの列サイズです。

tna

いいえ

ブール値(true|false)

true

非ASCIIを変換します。非ASCII文字を保持するにはfalseに設定します。


表B-2にURLのサンプルをリストします。

B-2 URLのサンプル

URLのサンプル アクション

jdbc:snps:xml

デフォルトのスキーマに接続します。

jdbc:snps:xml?f=/tmp/myfile.xml&ro=true&/tmp/mydtd.dtd

/tmp/mydtd.dtd DTDを使用して、/tmp/myfile.xmlファイルを読取り専用モードで開きます。

jdbc:snps:xml?file=/tmp/myfile.xml

/tmp/myfile.xmlファイルを読取り/書込みモードで開きます。

jdbc:snps:xml?s=myschema

スキーマmyschemaに直接接続します。


B.3.2 複数のスキーマの自動作成

ドライバへの接続の作成時に、XML構造が異なる追加のスキーマを自動的に作成できます。これは、次の方法で実行します。

  • add_schema_bundle URLプロパティで、作成する別の追加スキーマに対応するJDBC URLのリストが含まれているプロパティ・ファイルを宣言します。

  • add_schema_path URLプロパティで、一連のXSDファイルが含まれているディレクトリを宣言します。各XSDファイルに対して、XMLスキーマの記述に基づいて追加のスキーマが組込みエンジン内に作成されます。

  • 追加の有効なドライバURLをaddschema_X (Xは数字)という名前のJDBCプロパティとして指定します。addschema_XというJDBCプロパティで検出されたURLごとに、追加のスキーマが作成されます。

これらのすべての追加スキーマは、最後の接続が閉じられると自動的にドロップされます。

B.3.3 外部データベースを使用したデータの格納

ほとんどの場合、XMLドライバでは、XMLスキーマのリレーショナル・スキーマ・マッピングを組込みエンジンに格納します。リレーショナル・スキーマを外部リレーショナル・データベースに格納することもできます。

次の場合は、外部記憶域を使用します。

  • XMLドライバによって導出されたリレーショナル・スキーマに、XMLドライバを使用して、大規模XMLファイルをロードする場合

  • XMLドライバの組込みエンジンによるファイルの処理に要する時間全体を短縮する場合

  • ODIリポジトリへのタイムアウトを防ぐため。XMLファイルの処理に要する時間は、次の点により異なります。

    • XMLファイル構造の複雑さ

    • XMLファイルの内容の長さ

    • ホスト・サーバーのRAMリソース

    • ホスト・サーバーのCPUリソース

外部記憶域を使用する前に、外部記憶域の使用による影響を理解していること、およびODIのタイムアウトを、パフォーマンスの要件を満たす値に増加したことを確認してください。


注意:

外部記憶域用にサポートされるRDBMSには、Oracle、Microsoft SQL Server、MySQLおよびHypersonic SQLなどがあります。外部記憶域がサポートされるテクノロジの完全なリストには、次のOracle Technical Network (OTN)からアクセスできます。

http://www.oracle.com/technology/products/oracle-data-integrator/index.html


これらのスキーマは、JDBCドライバのURLで指定されているプロパティを使用して作成されるスキーマに加えて作成されます。

外部記憶域は、表B-3に示す一連のプロパティで構成されます。これらのプロパティは、次の複数の方法で渡すことができます。

ドライバURLでのプロパティの受渡し

ドライバURLでプロパティを直接設定できます。この方法を使用する場合は、プロパティに接頭辞としてdp_を付ける必要があります。たとえば、Oracleデータベースに接続する場合は、driverパラメータでOracle JDBCドライバ名を次のように指定します。

dp_driver=oracle.jdbc.driver.OracleDriver.

ODI Studioでのプロパティの設定

プロパティは、トポロジ・ナビゲータのデータ・サーバー・エディタの「プロパティ」タブで指定できます。この方法を使用する場合は、プロパティに接頭辞としてdp_を付ける必要があります。たとえば、driverパラメータを設定するとします。

  1. 「キー」列にdp_driverと入力します。

  2. Oracleデータベースに接続している場合は、「値」列にoracle.jdbc.driver.OracleDriverと入力します。

プロパティ・ファイルでのプロパティの設定

外部データベース・プロパティ・ファイルでプロパティを設定できます。プロパティ・バンドルとも呼ばれるこのプロパティ・ファイルは、.properties拡張子を持つテキスト・ファイルであり、ここに含まれる一連の行には、それぞれ、<property>=<value>のペアがあります。この外部データベース・プロパティ・ファイルには、リレーショナル・データベース・スキーマへのJDBC接続のプロパティが含まれています。このプロパティ・ファイルは、JDBC URLのdb_propsプロパティを使用して参照されます。この方法を使用する場合は、次のことに注意してください。

  • プロパティ・ファイルのプロパティには接頭辞は付けず、表B-3に示すように使用します。

  • db_propsプロパティは.properties拡張子を含むプロパティ・ファイルの名前に設定します。db_propsプロパティは、外部データベース・プロパティ・ファイルに接続情報が格納されているデータベース・スキーマに、スキーマをロードする必要があることを示します。

  • プロパティ・ファイルはXML接続を使用してエージェントによってデプロイする必要があります。プロパティ・ファイルの場所は、使用するエージェントによって異なります。

    • ローカル・エージェント(Studio): 外部DBプロパティ・ファイルを<user.dir>/odi/oracledi/userlibフォルダに配置します。

    • スタンドアロン・エージェント: 外部DBプロパティ・ファイルをoracledi/agent/driversフォルダに配置します。

    • JavaEEエージェント: 外部DBプロパティ・ファイルをJARまたはZIPファイルに圧縮し、Java EEエージェントによって生成されたテンプレートに追加する必要があります。詳細は、『Oracle Fusion Middleware Oracle Data Integrator開発者ガイド』のJava EEアプリケーション・サーバー(Oracle WebLogic Server)でのエージェントのデプロイに関する項を参照してください。

  • プロパティ・ファイルをXMLドライバを使用するOracle Data Integratorのクラスパスに設定する必要があります。通常、このファイルはカスタム・ドライバでインストールできます。


注意:

XMLドライバでは、外部データベースへの接続時にJDBC接続が使用されます。この外部データベースにアクセスするためのJDBCドライバも、必ずODIクラスパスに配置してください。


外部データベースのプロパティをURLで設定または上書きできます。これらのプロパティには、接頭辞として文字列dp_を付ける必要があります。次に例を示します。

jdbc:snps:xml?file=/temp/payload.xml&dp_driver=<external_db_driver>&dp_url=<external_db_url>

外部記憶域を構成するためのプロパティを、表B-3に示します。

表B-3 外部データベース・プロパティ・ファイルのプロパティ

プロパティ 必須 種類 デフォルト 説明

driver

はい

文字列

-

JDBCドライバ名。

重要: ドライバ・クラス・ファイルをjavaアプリケーションのクラスパスに配置する必要があります。

url

はい

文字列

-

JDBC URL。

user

はい

文字列

-

データベースへの接続に使用するログイン。

password

はい

文字列

-

暗号化されたユーザー・パスワード。

注意: パスワードを暗号化するには、encode.batコマンドを使用します。詳細は、『Oracle Fusion Middleware Oracle Data Integratorインストレーション・ガイド』を参照してください。

schema

はい

文字列

-

リレーショナル・スキーマおよびXMLデータを格納するデータベース・スキーマ。

MS SQLServerについて、次のことに注意してください。

  • スキーマが指定されていない場合、表はユーザーのデフォルト・スキーマの下に作成されます

  • スキーマが指定されている場合、表はそのスキーマの下に作成されます

catalog

はい

文字列

-

Microsoft SQL Server専用です。XMLのデータおよび情報を格納するデータベース・カタログです。

drop_on_connectまたはdoc

いいえ

ブール値(Y|N)

N

すでに存在する場合、データベース・スキーマから表をドロップします。Nに設定すると、既存の表が保持されます。

create_tablesまたはct

いいえ

(Y | N | AUTO)

AUTO

Y: 一貫してスキーマに表を作成します。

N: 状況にかかわらずスキーマに表を作成しません

AUTO: 表が存在しない場合は、表を作成します。

create_indexesまたはci

いいえ

ブール値(Y|N)

Y

Y: 表のPKおよびFKに索引を作成します。

N: 索引を作成しません。この値によって、INSERTは速くなりますが、データのSELECTは大幅に遅くなります。RDBの記憶域も節約されます。

truncate_before_loadまたはtbl

いいえ

ブール値(Y|N)

Y

Y: 接続時にすべてのデータを切り捨てます。

N: 既存のデータを保持します。

ids_in_dbまたはiidb

いいえ

ブール値(Y|N)

Y

Y: 将来接続を追加するために、データベース内の識別子(カウンタ)を保持します。

N: 識別子を保持しません。以後、追加することはできません。

drop_tables_on_drop_schemaまたはdtods

いいえ

ブール値(Y|N)

Y

Y: DROP SCHEMAによって、データベース・スキーマへの参照がドライバから消去され、さらに、すべての表がドロップされます。

N: DROP SCHEMAによって、データベース・スキーマへの参照がドライバから消去されますが、表はデータベース・スキーマ内に保持されます。

use_prepared_statementsまたはups

いいえ

ブール値(Y|N)

Y

Y: データベース接続でプリペアド文を使用して、ドライバ操作(ファイルのロード/アンロード)が実行されます。

N: プリペアド文を使用しません。

通常、プリペアド文を使用した方が処理は速くなります。このオプションを使用するには、データベースおよびドライバで、プリペアド文がサポートされている必要があります。

use_batch_updateまたはubu

いいえ

ブール値(Y|N)

Y

Y: データベース接続でバッチ更新を使用します。

N: バッチ更新を使用しません。

通常、データの挿入はバッチ更新を使用した方が速くなります。次の条件を満たす場合のみ、Yesに設定する必要があります:

  • データベースおよびドライバがバッチ更新をサポートしている

  • データベースがプリペアド文をサポートしている

  • use_prepared_statementsパラメータがYesに設定されている

注意: ここで指定したバッチ更新オプションは、スキーマ内のデータのロードのみに使用されます。スキーマ内のデータの操作にバッチ更新を使用するには、使用するJavaアプリケーションでバッチ更新オプションを指定する必要があります。

batch_update_sizeまたはbus

いいえ

整数

30

バッチ更新のサイズ。use_batch_updateプロパティがYに設定されている場合は、このサイズのバッチ単位でレコードがデータベース・スキーマに書き込まれます。

commit_periodicallyまたはcp

いいえ

ブール値(Y|N)

Y

XMLファイルからデータベース・スキーマへデータをロードする際に、定期的にCOMMITが送信されます。定期的にCOMMITを送信することで、大きいXMLデータ・ファイルをロードする際のデータベース・ログの過負荷を防ぎます。

次の条件を満たす場合のみ、Yesに設定する必要があります:

  • データベースがバッチ更新をサポートしている

  • データベースがプリペアド文をサポートしている

  • use_prepared_statementsパラメータがYesに設定されている

  • use_batch_updatesパラメータがYesに設定されている

注意: ここで指定したコミット・オプションは、スキーマ内のデータのロードのみに使用されます。スキーマでトランザクションを実行する際にコミットするには、使用するJavaアプリケーションでコミットを指定する必要があります。

num_inserts_before_commitまたはnibc

いいえ

整数

1000

commit_periodicallyプロパティがYに設定されている場合のCOMMITの間隔(レコード数)。

reserve_chars_for_columnまたはrcfc

いいえ

整数

3

長いXML名は、JDBCドライバによって戻される列名の最大許容サイズに従って、RDBMSの最大許容サイズにあうように切り捨てられます。

ただし、状況によっては、より少ない文字数を使用して、ドライバで生成される名前を短くする必要があります。減らす文字の数は、reserve_chars_for_column値で定義されます。

たとえば、最大30文字のデータベースでこのプロパティを3(デフォルト)に設定すると、すべての列名が27文字以下になります。

reserve_chars_for_tableまたはrcft

いいえ

整数

3

reserve_chars_for_column (rcfc)と同じですが、RDBMSスキーマに作成された表の名前に適用されます。

varchar_lengthまたはvl

いいえ

整数

255

文字列データの格納に使用されるリレーショナル構造のすべての列のサイズ。

numeric_lengthまたはnl

いいえ

整数

30

数値データの格納に使用されるリレーショナル構造のすべての列のサイズ。

unicode

いいえ

ブール値(true|false)


MS SQL Serverの場合:

unicode = trueの場合はNVARCHARが使用されます。

unicode = falseまたは未設定の場合は、VARCHARが使用されます。


次のサンプルは、Oracle Databaseを外部記憶域として使用した場合のプロパティ・ファイルの例です。

driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@HOST:PORT:SID
user=USER_NAME
password=ENCODED_PASSWORD
schema=USER_NAME
drop_on_connect=Y
create_tables=AUTO
create_indexes=Y
truncate_before_load=Y
ids_in_db=Y
drop_tables_on_drop_schema=Y
use_prepared_statements=Y
use_batch_update=Y
batch_update_size=30
commit_periodically=Y
num_inserts_before_commit=1000
reserve_chars_for_column=3
reserve_chars_for_table=3

次のサンプルは、Microsoft SQL Serverデータベースを外部記憶域として使用した場合のプロパティ・ファイルの例です。

driver=com.microsoft.jdbc.sqlserver.SQLServerDriverurl=jdbc:microsoft:sqlserver://SERVER_NAME:PORT;SelectMethod=cursoruser=USER_NAMEpassword=ENCODED_PASSWORDschema=OWNNER_NAMEdrop_on_connect=Ycreate_tables=AUTOcreate_indexes=Ytruncate_before_load=Yids_in_db=Ydrop_tables_on_drop_schema=Yuse_prepared_statements=Yuse_batch_update=Ybatch_update_size=30commit_periodically=Ynum_inserts_before_commit=1000reserve_chars_for_column=3reserve_chars_for_table=3

B.4 ドライバ・コマンドの詳細

この項に示す文はXMLドライバ固有のものであり、XMLファイルおよびスキーマの管理を可能にします。これらの文は、XMLドライバへのJDBC接続で、標準のSQL文として起動できます。

スキーマに格納されているデータを操作するには、標準のSQL構文を使用できます。この構文は、組込みエンジンのSQL構文、または使用する外部データベース・エンジンのSQL構文です。

表記規則

このマニュアルでは次の表記規則を使用します。

この項では、次のドライバ固有のコマンドについて説明します。

B.4.1 CREATE FILE

デフォルトのスキーマ・データまたは特定のスキーマから、<file_name>というXMLファイルを生成します。

EMPTYオプションが指定されている場合は、DTDまたはXSDで指定されたXML構造を持つ空のファイルが生成されます。

CREATE [EMPTY] FILE <file_name> [FROM SCHEMA <schema_name>] 
    [JAVA_ENCODING <java_encoding>  XML_ENCODING <xml_encoding>] 
    [NO_CLOSING_TAGS] [NO_DEFAULT_NS]

パラメータ 

FROM SCHEMA

XMLファイルへのデータの書込みに使用するスキーマを指定します。

JAVA_ENCODING

生成されるファイルのエンコーディング。

XML_ENCODING

ファイルのxmlタグで生成されるエンコーディング。

生成されるタグの例: <?xml version="1.0" encoding="ISO-8859-1"?>

JavaおよびXMLのエンコーディングは、常に一緒に指定する必要があります。

NO_CLOSING_TAG

このパラメータを指定すると、終了タグのある空のタグが生成されます。デフォルトでは、<element></element>として空の要素が生成されます。no_closing_tagsパラメータでは、<element/>が生成されます。

NO_DEFAULT_NS

このパラメータを指定すると、デフォルトの名前空間エントリがないターゲット・ファイルが生成されます。

注意

  • ファイル名にスペースが含まれる場合は、名前を二重引用符で囲んでください。

  • エンコーディング値には特殊文字が含まれている可能性があるため、値を二重引用符で囲んでください。

B.4.2 CREATE XMLFILE

デフォルトのスキーマ・データまたは特定のスキーマから、<file_name>というXMLファイルを生成します。

CREATE XMLFILE <file_name> [FROM SCHEMA <schema_name>] 
    [JAVA_ENCODING <java_encoding> XML_ENCODING <xml_encoding>] 
    [NO_CLOSING_TAGS][NO_DEFAULT_NS] 

パラメータ 

FROM SCHEMA

XMLファイルへのデータの書込みに使用するスキーマを指定します。

JAVA_ENCODING

生成されるファイルのエンコーディング。

XML_ENCODING

ファイルのxmlタグで生成されるエンコーディング。生成されるタグの例: <?xml version="1.0" encoding="ISO-8859-1"?>

JavaおよびXMLのエンコーディングは、常に一緒に指定する必要があります。

NO_CLOSING_TAG

このパラメータを指定すると、終了タグのある空のタグが生成されます。デフォルトでは、<element></element>として空の要素が生成されます。no_closing_tagsパラメータでは、<element/>が生成されます。

NO_DEFAULT_NS

このパラメータを指定すると、デフォルトの名前空間エントリがないターゲット・ファイルが生成されます。

注意

  • ファイル名にスペースが含まれる場合は、名前を二重引用符で囲んでください。

  • エンコーディング値には特殊文字が含まれている可能性があるため、値を二重引用符で囲んでください。

B.4.3 CREATE FOREIGNKEYS

データベースのリレーショナル・スキーマの表を結合するすべての外部キーを物理的に作成します。このコマンドは、スキーマで整合性制約を強制するのに役立ちます。


注意:

要求されると、ドライバは、常に、リレーショナル構造マッピングに対応する仮想外部キーを戻します。データベース・レベルで強制された実際の外部キーは戻しません。


CREATE FOREIGNKEYS

注意

CREATE FOREIGNKEYSを使用すると、それ以後LOAD FILEを実行できなくなります。

B.4.4 CREATE SCHEMA

<schema_name>に、空のスキーマ、または<dtd/xsd_name>として指定された記述ファイルの構造をマップする表のスキーマを作成します。

CREATE SCHEMA <schema_name> [WITH DTD <dtd/xsd_name>] [REPLACE] 
   [ROOTELT <root element>] [READONLY] 
   [JAVA_ENCODING <java_encoding> XML_ENCODING <xml_encoding>]

パラメータ 

WITH DTD

スキーマで構造が作成される記述ファイル(DTDまたはXSD)を指定します。

REPLACE

既存のスキーマ構造を新しいものに置き換える必要があるかどうかを指定します。

ROOTELT

XMLファイルのルートとみなされる記述ファイルの要素。この要素名では大/小文字が区別されます。

READONLY

ロードされるスキーマに対してデータの挿入、削除または更新を実行できません。

JAVA_ENCODING

スキーマから生成されるターゲットXMLファイルのエンコーディング。

注意: JavaおよびXMLのエンコーディングは、常に一緒に指定する必要があります。

XML_ENCODING

ターゲット・ファイルのXMLタグで生成されるエンコーディング。生成されるタグの例: <?xml version="1.0" encoding="ISO-8859-1"?>

注意

  • XMLファイルのデータはロードされません。このコマンドはLOAD FILEと似ていますが、XMLファイルのデータはロードされません。

  • XMLファイルが関連付けられていないため、スキーマは読取り専用モードで作成されます。

  • 接続スキーマは、新規作成されたスキーマに自動的に切り替わりません。

  • ファイル名にスペースが含まれる場合は、名前識別子を二重引用符で囲んでください。

  • エンコーディング値には特殊文字が含まれている可能性があるため、値を二重引用符で囲んでください。

B.4.5 DROP FOREIGNKEYS

データベースのリレーショナル・スキーマの表にあるすべての外部キーをドロップします。このコマンドは、スキーマのすべての整合性制約をドロップするのに役立ちます。

DROP FOREIGNKEYS

B.4.6 DROP SCHEMA

既存のスキーマをドロップします。<schema_name>が指定されていない場合は、現在のスキーマがドロップされます。スキーマへの保留状態の接続がある場合は、スキーマをドロップできません。既存の接続があるスキーマをドロップしようとすると、例外が発生します。

DROP SCHEMA [<schema_name>]

B.4.7 LOAD FILE

現在のリレーショナル・スキーマに<file_name> XMLファイルをロードします。

LOAD FILE <file_name> [WITH DTD <dtd/xsd_name> | INSERT_ONLY] [ON SCHEMA <schema_name>] [REPLACE] [READONLY] [ROOTELT <root element>] [AUTO_UNLOCK] [DB_PROPS <external database properties>]

パラメータ 

WITH DTD

スキーマで構造が作成される記述ファイル(DTDまたはXSD)を指定します。

INSERT_ONLY

スキーマがすでに存在する場合は、スキーマにXMLファイルのデータを追加します。新規のXMLファイルには、既存のスキーマに関する有効な記述ファイルが必要です。

ON SCHEMA

<schema_name>に強制的にファイルをロードします。現在のスキーマは、コマンドの実行後に自動的に<schema_name>に設定されないため、注意してください。

REPLACE

同じ名前の既存のスキーマ構造を、ロード中のスキーマ構造に置き換える必要があるかどうかを指定します。

READONLY

ロードされるスキーマに対してデータの挿入、削除または更新を実行できません。

ROOTELT

XMLファイルのルートとみなされる記述ファイルの要素。この要素名では大/小文字が区別されます。

AUTO_UNLOCK

AUTO_UNLOCKを指定しない場合、XMLファイルがすでに別のドライバ・インスタンスによってロックされていると、例外が発生します。このパラメータを使用すると、ファイルがロックされている場合にロックが自動的に解除されます。

DB_PROPS

<external database properties>.propertiesというプロパティ・ファイルで識別される外部データベースのファイルをロードします。

注意

  • ファイル名にスペースが含まれる場合は、名前を二重引用符で囲んでください。

  • スキーマが指定されていない場合、スキーマ名はファイル名に基づいて自動的に生成されます。

  • 接続スキーマは、ロードされたスキーマに自動的に切り替わりません。

  • XMLファイルがすでに別のスキーマで開いている場合は、例外が発生します。

B.4.8 SET SCHEMA

現在のスキーマを<schema_name>に設定します。

SET SCHEMA <schema_name>

注意

<schema_name>が指定されていない場合、スキーマはデフォルト・スキーマに設定されます。

B.4.9 SYNCHRONIZE

スキーマ内のデータをファイルのデータと同期化します。

SYNCHRONIZE [ALL | SCHEMA <schema_name>] [FROM FILE/FROM DATABASE] 
 [IGNORE CONFLICTS]

パラメータ 

ALL

すべてのスキーマを同期化します。

SCHEMA

<schema_name>のみを同期化します。

FROM FILE

ファイルからスキーマへ、強制的にデータをロードします。スキーマでの変更はすべて消去されます。

FROM DATABASE

スキーマからファイルへ、強制的にデータをロードします。ファイルでの変更はすべて消去されます。

IGNORE CONFLICTS

FROM FILE/DATABASEが指定されていない場合は、データが変更された場所(FILEまたはDATABASE内)が自動的に判別され、未変更のデータが更新されます。FILEとDATABASEの両方が変更されている場合は、競合エラーが発生します。IGNORE CONFLICTSパラメータを使用すると、エラーは発生せず、SYNCHRONIZE ALLを実行している場合はそれ以降のスキーマが同期化されます。


注意:

スキーマが更新済としてマークされるのは、データ変更(更新、削除、挿入、ドロップ)がそのスキーマへの接続で実行された場合のみです。指示が別のスキーマへの接続から出された場合は、更新済としてマークされません。


B.4.10 UNLOCK FILE

別のドライバ・インスタンスによって<file_name>がロックされている場合に、このファイルをロック解除します。

UNLOCK FILE <file_name>

B.4.11 TRUNCATE SCHEMA

現在のスキーマまたはschema_name>からすべてのデータを消去します。

TRUNCATE SCHEMA [<schema_name>]

B.4.12 VALIDATE

XMLファイル<file_name>が正しい形式であることを確認し、XMLスキーマ(XSD)がXMLファイルで参照される場合はこのスキーマと照合して、XMLファイル<file_name>の内容を検証します。ファイルが有効でない場合は、コマンドによって例外が戻されます。実行される検証の詳細は、次を参照してください。

http://xerces.apache.org/xerces2-j/features.html#validation.schema

VALIDATE [FILE <file_name>] [ERROR_ON_WARNING|IGNORE_ON_WARNING] 
   [ERROR_ON_ERROR|IGNORE_ON_ERROR] 
   [ERROR_ON_FATAL_ERROR|IGNORE_ON_FATAL_ERROR] [VERBOSE]

パラメータ 

FILE <file_name>

検証するXMLファイルの名前。

ERROR_ON_WARNING | IGNORE_ON_WARNING

XSD検証警告(範囲外の値など)を無視するか、エラーを生成します。デフォルト値はIGNORE_ON_WARNINGです。

ERROR_ON_ERROR | IGNORE_ON_ERROR

XSD検証エラー(適合しない属性または要素など)を無視するか、エラーを生成します。デフォルト値はERROR_ON_ERRORです。

ERROR_ON_FATAL_ERROR | IGNORE_ON_FATAL_ERROR

XSD検証の致命的エラー(不正なXMLなど)を無視するか、エラーを生成します。デフォルト値はERROR_ON_FATAL_ERRORです。

VERBOSE

エラーの詳細およびエラーが発生した行の番号をJavaコンソールに表示します。デフォルトでは、コンソールには何も表示されません。

B.5 SQL構文

この項に示す文は、組込みエンジンを使用してXMLスキーマを格納する場合に使用できます。これらの文を使用すると、標準のSQL文を介してスキーマのデータおよびデータ構造を管理できます。

この項には次のトピックが含まれます:


注意:

外部データベースを使用している場合は、この構文のかわりにデータベース・エンジンの問合せ構文を使用できます。


B.5.1 SQL文

任意の数のコマンドを組み合せることができます。セミコロン(;)を使用して各コマンドを区切っても構いません。

この項では、次のコマンドについて説明します。

B.5.1.1 COMMIT

スキーマのトランザクションを終了し、変更を永続化します。

COMMIT [WORK]

B.5.1.2 CREATE TABLE

リレーショナル・スキーマに表およびその制約を作成します。

CREATE TABLE <table_name> 
  ( <columnDefinition> [, ...] [, <constraintDefinition>...])
<columnDefinition> ::=
    <column_name> <datatype> [(anything)] [[NOT] NULL] [IDENTITY] [PRIMARY KEY]
<constraintDefinition> ::=
[ CONSTRAINT <constraint_name> ]
    UNIQUE ( <column_name> [,<column>...] ) |
    PRIMARY KEY ( <column_name> [,<column_name>...] ) |
    FOREIGN KEY ( <column_name> [,<column_name>...] ) 
    REFERENCES <referenced_table> ( <column_name> [,<column_name>...] )

注意

  • IDENTITY列は、自動的に増加する整数の列です。接続に対してIDENTITY列に最後に挿入された値は、IDENTITY()ファンクションを使用して取得できます。

  • 有効なデータ型は、BIT、TINYINT、BIGINT、LONGVARBINARY、VARBINARY、BINARY、LONGVARCHAR、CHAR、NUMERIC、DECIMAL、INTEGER、SMALLINT、FLOAT、REAL、DOUBLE、VARCHAR、DATE、TIME、TIMESTAMP、OBJECTです。

B.5.1.3 DELETE

リレーショナル・スキーマの表の行を削除します。このファンクションでは標準のSQL構文が使用されます。

DELETE FROM <table_name> [ WHERE <expression> ]

B.5.1.4 DISCONNECT

この接続を閉じます。

DISCONNECT

注意

  • JDBCインタフェースを使用している場合は、このコマンドをコールする必要はありません。接続が閉じる際に自動的にコールされます。

  • 切断後は、この接続で他の問合せを実行することはできません。

B.5.1.5 DROP TABLE

リレーショナル・スキーマから表、データおよび索引を削除します。

DROP TABLE <table_name>

B.5.1.6 INSERT INTO

1つ以上の新しいデータ行を表に挿入します。

INSERT INTO <table_name> [ ( <column_name> [,...] ) ] 
    { VALUES (<expression> [,...]) | <SELECT Statement> }

B.5.1.7 ROLLBACK

最後のCOMMITまたはROLLBACK以降に行われた変更を元に戻します。

ROLLBACK

B.5.1.8 SELECT

スキーマ内の1つ以上の表から情報を取得します。

SELECT [DISTINCT] { <select_expression> | <table_name>.* | * } [, ... ]
[  INTO <new_table> ]
   FROM <table_list>
[  WHERE <expression> ]
[  GROUP BY <expression> [, ...] ]
[  ORDER BY <order_expression> [, ...] ]
[  { UNION [ALL] | {MINUS|EXCEPT} | INTERSECT } <select_statement> ]
<table_list> ::=
     <table_name> [ { INNER | LEFT [OUTER] } JOIN <table_name> 
     ON <expression> ]  [, ...]
<select_expression> ::=
      { <expression> | COUNT(*) | {COUNT | MIN | MAX | SUM | AVG} 
       (<expression>) <column_alias>}
<order_expression> ::=
      { <column_number> | <column_alias> | <select_expression> } [ ASC | DESC ]

B.5.1.9 SET AUTOCOMMIT

接続の自動コミット・モードをオンまたはオフに切り替えます。オンにすると、すべての文が個別のトランザクションとしてコミットされます。オフにすると、文はCOMMITまたはROLLBACKのどちらかで終了するトランザクションにグループ化されます。新しい接続は、デフォルトで自動コミット・モードになります。

SET AUTOCOMMIT { TRUE | FALSE }

B.5.1.10 UPDATE

データベース内の表のデータを変更します。

UPDATE table SET column = <expression> [, ...] [WHERE <expression>]

B.5.1.11 式、条件および値

<expression> ::=
     [NOT] <condition> [ { OR | AND } <condition> ]
<condition> ::=
     { <value> [ || <value> ]
      | <value> { = | < | <= | > | >= | <> | != | IS [NOT] } <value>
      | EXISTS(<select_statement>)
      | <value> BETWEEN <value> AND <value>
      | <value> [NOT] IN ( {<value> [, ...] | selectStatement } )
      | <value> [NOT] LIKE <value> [ESCAPE] value }
<value> ::=
      [ + | - ] { term [ { + | - | * | / } term ]
      | ( condition )
      | function ( [parameter] [,...] )
      | selectStatement_giving_one_value
<term> ::=
      { 'string' | number | floatingpoint | [table.]column | TRUE | FALSE | NULL }
<string> ::=
  • 開始および終了には、単一の「'」を使用します。「'」で開始した文字列内に「'」を作成するには、「''」を使用します。

  • LIKEでは、任意の数(0を含む)の文字と一致させる場合は%を使用し、1つの文字と完全に一致させる場合は_を使用します。%自体の検索には\%、_自体の検索には\_を使用するか、ESCAPE句を使用してその他の任意のエスケープ文字を設定できます。

<name> ::=
  • 名前の先頭は文字で、後に任意の数の文字または数字が続きます。文字列および引用符で囲まれた識別子以外の小文字は、大文字に変換されます。名前では大/小文字は区別されません。

  • 識別子(表または列など)を引用符で囲んで、名前として使用できます。引用符で囲まれた識別子は、「"」で始まり「"」で終わります。引用符で囲まれた識別子の中に「"」を作成するには、「""」を使用します。引用符で囲まれた識別子を使用することで、大/小文字が混在する表および表名を作成できます。例: CREATE TABLE "Address" ("Nr" INTEGER, "Name" VARCHAR); SELECT * FROM "Address"。引用符で囲まれた識別子は文字列ではありません。

<values> ::=
  • 日付値は「'」で始まり「'」で終わります。書式はyyyy-mm-ddです(java.sql.Dateを参照)。

  • 時間値は「'」で始まり「'」で終わります。書式はhh:mm:ssです(java.sql.Timeを参照)。

  • バイナリ・データは「'」で始まり「'」で終わります。書式は16進値です。たとえば'0004ff'は、最初が0、2番目が4、最後が255 (0xff)の3バイトです。

B.5.2 SQLファンクション

表B-4に数値ファンクションをリストします。

表B-4 数値ファンクション

ファンクション 説明

ABS(d)

double値の絶対値を戻します。

ACOS(d)

角度のアーク・コサインを戻します。

ASIN(d)

角度のアーク・サインを戻します。

ATAN(d)

角度のアーク・タンジェントを戻します。

ATAN2(a,b)

a/bのタンジェントを戻します。

CEILING(d)

d以上の最小整数を戻します。

COS(d)

角度のコサインを戻します。

COT(d)

角度のコタンジェントを戻します。

DEGREES(d)

ラジアンを角度に変換します。

EXP(d)

e (2.718...)のd乗を戻します。

FLOOR(d)

d以下の最大整数を戻します。

LOG(d)

eを底とする自然対数を戻します。

LOG10(d)

10を底とする対数を戻します。

MOD(a,b)

aをbで割った剰余を戻します。

PI()

円周率(3.1415...)を戻します。

POWER(a,b)

aのb乗を戻します。

RADIANS(d)

角度をラジアンに変換します。

RAND()

0.0以上1.0未満の乱数xを戻します。

ROUND(a,b)

aを小数点以下b桁に丸めます。

SIGN(d)

dが0未満の場合は-1、dが0の場合は0、dが0より大きい場合は1を戻します。

SIN(d)

角度のサインを戻します。

SQRT(d)

平方根を戻します。

TAN(d)

角度の三角関数タンジェントを戻します。

TRUNCATE(a,b)

aを小数点以下b桁に切り捨てます。

BITAND(a,b)

a & bを戻します。

BITOR(a,b)

a | bを戻します。


表B-5に文字列ファンクションをリストします。

表B-5 文字列ファンクション

ファンクション 説明

ASCII(s)

sの左端の文字のASCIIコードを戻します。

CHAR(c)

ASCIIコードがcの文字を戻します。

CONCAT(str1,str2)

str1とstr2を連結して戻します。

DIFFERENCE(s1,s2)

s1とs2の発音の差を戻します。

INSERT(s,start,len,s2)

startからlen文字分をs2に置き換えて、文字列を戻します。

LCASE(s)

sを小文字に変換します。

LEFT(s,count)

sの左端からcount文字分を戻します。

LENGTH(s)

sの文字数を戻します。

LOCATE(search,s,[start])

startから開始して、s内でsearchが検出された最初の索引(1=左、0=見つからない)を戻します。

LTRIM(s)

sの先頭の空白をすべて削除します。

REPEAT(s,count)

sをcount回分繰り返して戻します。

REPLACE(s,replace,s2)

sに出現するすべてのreplaceをs2に置き換えます。

RIGHT(s,count)

sの右端からcount文字分を戻します。

RTRIM(s)

末尾の空白をすべて削除します。

SOUNDEX(s)

sの発音を表す4文字のコードを戻します。

SPACE(count)

count個分のスペースで構成される文字列を戻します。

SUBSTRING(s,start[,len])

start (1=左)からlen文字分のサブストリングを戻します。

UCASE(s)

sを大文字に変換します。

LOWER(s)

sを小文字に変換します。

UPPER(s)

sを大文字に変換します。


表B-6に日時ファンクションをリストします。

日付値は一重引用符(')で始まり、一重引用符(')で終わります。書式はyyyy-mm-ddです(java.sql.Dateを参照)。時間値は一重引用符(')で始まり、一重引用符(')で終わります。書式はhh:mm:ssです(java.sql.Timeを参照)。

表B-6 日時ファンクション

ファンクション 説明

CURDATE()

現在の日付を戻します。

CURTIME()

現在の時間を戻します。

DAYNAME(date)

曜日の名前を戻します。

DAYOFMONTH(date)

月の日付(1から31)を戻します。

DAYOFWEEK(date)

週の曜日(1は日曜日)を戻します。

DAYOFYEAR(date)

その年の何日目か(1から366)を戻します。

HOUR(time)

時間(0から23)を戻します。

MINUTE(time)

分(0から59)を戻します。

MONTH(date)

月(1から12)を戻します。

MONTHNAME(date)

月の名前を戻します。

NOW()

現在の日時をタイムスタンプとして戻します。

QUARTER(date)

四半期(1から4)を戻します。

SECOND(time)

秒(0から59)を戻します。

WEEK(date)

その年の何週目か(1から53)を戻します。

YEAR(date)

年を戻します。


表B-7にシステム・ファンクションをリストします。

表B-7 システム・ファンクション

ファンクション 説明

IFNULL(exp,value)

expがNULLの場合はvalueを戻し、NULLでない場合はexpを戻します。

CASEWHEN(exp,v2,v2)

expがtrueの場合はv1を戻し、trueでない場合はv2を戻します。

CONVERT(term,type)

expを別のデータ型に変換します。

CAST(term AS type)

expを別のデータ型に変換します。


B.6 実装されるJDBC API機能

表B-8に、Oracle Data Integrator Driver for XMLに実装されているJDBC API機能をリストします。

表B-8 JDBC APIの機能

機能グループ JDBCのバージョン サポート

バッチ更新

2.0コア

はい

Blob/Clob

2.0コア

はい

JNDIデータソース

2.0オプション

はい

フェイルオーバー・サポート

-

はい

トランザクション・セーブポイント

3.0

はい

Unicodeサポート

-

いいえ

分散トランザクション

2.0オプション

いいえ

接続プーリング

2.0オプション

いいえ

クラスタ・サポート

-

いいえ


表B-9にJDBC Javaクラスをリストします。

表B-9 JDBC Javaクラス

JDBCクラス JDBCのバージョン サポート

Array

2.0コア

いいえ

Blob

2.0コア

はい

CallableStatement

1.0

はい

Clob

2.0コア

はい

Connection

1.0

はい

ConnectionPoolDataSource

2.0オプション

いいえ

DatabaseMetaData

1.0

はい

DataSource

2.0オプション

いいえ

Driver

1.0

はい

Ref

2.0コア

いいえ

ResultSet

1.0

はい

ResultSetMetaData

1.0

はい

RowSet

2.0オプション

いいえ

Statement

1.0

はい

Struct

2.0コア

いいえ

PreparedStatement

1.0

はい

XAConnection

2.0オプション

いいえ

XADataSource

2.0オプション

いいえ


B.7 サポートされているXMLスキーマの機能

ドライバでは、XMLスキーマ(XSD)仕様の一部がサポートされています。この項では、サポートされている要素をリストします。

XMLスキーマ仕様の詳細は、W3Cの仕様(http://www.w3.org/TR/xmlschema-1/)を参照してください。

この項には次のトピックが含まれます:

B.7.1 データ型

サポートされているデータ型は次のとおりです。

  • 文字列列に変換されるデータ型: string、normalizedString、token、nmtoken、nmtokens、anyUri、id、idref、date、datetime、time、hexBinary

  • 整数列に変換されるデータ型: int、positiveInteger、negativeInteger、nonNegativeInteger、onPositiveInteger、long、unsignedLong、unsignedInt、short、unsignedShort、byte、unsignedByte、boolean(ブール値は0または1の数値列に変換されますが、入力ファイルからtrueまたはfalseの値を取得できます。)

  • 小数列に変換されるデータ型(小数点以下2桁): decimal、float、double

B.7.2 サポートされている要素

この項では、スキーマのすべての要素をリストします。サポートされている構文要素は、太字で表記されています。サポートされていない構文要素は、通常のフォントで表記されています。これらは、ドライバによって無視されます。

この項では、次のスキーマ要素について説明します。


注意:

理想としては、XMLドライバを使用して生成または更新されたXMLファイルは、生成後にVALIDATEコマンドを使用して、対応するXSDファイルと照合して検証する必要があります。


B.7.2.1 All

この要素は、子要素を順序付けせずに、それぞれ0回または1回出現させることができることを示します。

子要素の必須プロパティ(minOccurs=1)は、ドライバでは管理されないため注意してください。データのチェック、およびXSDとの照合によるXMLコンテンツの検証を実行することで、これを管理する必要があります。

<all
    id=ID
    maxOccurs=1
    minOccurs=0|1
    any attributes
>
(annotation?,element*)
</all>

B.7.2.2 Attribute

この要素は属性を定義します。

<attribute
    default=string
    id=ID
    name=NCName
    type=QName
    use=optional|prohibited|required
    ref=QName
    fixed=string
    form=qualified|unqualified
    any attributes
>
(annotation?,(simpleType?))
</attribute>

この要素のuse属性は、属性に対してドライバによってマップされる列が必須かどうかを定義します。

B.7.2.3 AttributeGroup

この要素は、一連の属性を定義します。

<attributeGroup
    id=ID
    name=NCName
    ref=QName
    any attributes
>
(annotation?),((attribute|attributeGroup)*,anyAttribute?))
</attributeGroup>

B.7.2.4 Choice

この要素では、中に含まれている要素のうち1つのみが出現可能になります。

<choice
    id=ID
    maxOccurs=nonNegativeInteger|unbounded
    minOccurs=nonNegativeInteger
    any attributes
>
(annotation?,(element|group|choice|sequence|any)*)
</choice>

子要素の一意性は、ドライバでは管理されません。データのチェック、およびXSDとの照合によるXMLコンテンツの検証を実行することで、これを管理する必要があります。

B.7.2.5 ComplexContent

この要素は、複合型での拡張または制限を定義します。

<complexContent
    id=ID
    mixed=true|false
    any attributes
>
(annotation?,(restriction|extension))
</complexContent>

B.7.2.6 ComplexType

この要素は、複合型を定義します。

<complexType
    name=NCName
    id=ID
    abstract=true|false
    mixed=true|false
    block=(#all|list of (extension|restriction))
    final=(#all|list of (extension|restriction))
    any attributes
>
(annotation?,(simpleContent|complexContent|((group|all|choice|sequence)?,((attribute|attributeGroup)*,anyAttribute?))))
</complexType>

B.7.2.7 Element

この要素は、XMLファイルの要素を定義します。

<element
    name=NCName
    maxOccurs=nonNegativeInteger|unbounded
    minOccurs=nonNegativeInteger
    type=QName
    id=ID
    ref=QName
    substitutionGroup=QName
    default=string
    fixed=string
    form=qualified|unqualified
    nillable=true|false
    abstract=true|false
    block=(#all|list of (extension|restriction))
    final=(#all|list of (extension|restriction))
    any attributes
>
annotation?,((simpleType|complexType)?,(unique|key|keyref)*))
</element>

注意:

この要素のmaxOccursおよびminOccurs属性は、XMLからSQLへのマッピングに使用されます。子要素が単純型で単一値(1回のみ出現)の場合、この要素は、親要素に対応する表の単純列にマップされます。それ以外の場合は、親要素の表にリンクされる表が作成されます。

要素内にminOccursまたはmaxOccursへの参照が記述されていない場合、その要素は単一値とみなされ、列に変換されます。この動作は、useImplicitMaxValue URLプロパティを使用して変更できます。このプロパティをyesに設定した場合、XSDでmaxOccursが指定されていない要素は、複数値(maxOccurs ="unbounded")とみなされます。



注意:

名前が同じで型が異なる複数のサブ要素の使用は、XMLドライバではサポートされていません。そのような構造を持つXSDは、正しく処理されません。


B.7.2.8 Extension

この要素は、既存のsimpleTypeまたはcomplexType要素を拡張します。

<extension
    id=ID
    base=QName
    any attributes
>
(annotation?,((group|all|choice|sequence)?,((attribute|attributeGroup)*,anyAttribute?)))
</extension>

B.7.2.9 Group

この要素は、複合型の定義で使用される要素のグループを定義します。

<group
    id=ID
    name=NCName
    ref=QName
    maxOccurs=nonNegativeInteger|unbounded
    minOccurs=nonNegativeInteger
    any attributes
>
(annotation?,(all|choice|sequence)?)
</group>

B.7.2.10 Import

この要素は、ターゲット名前空間が異なる複数のスキーマをドキュメントに追加します。

<import
    id=ID
    namespace=anyURI
    schemaLocation=anyURI
    any attributes
>
(annotation?)
</import>

B.7.2.11 Include

この要素は、ターゲット名前空間が同じ複数のスキーマをドキュメントに追加します。

<include
    id=ID
    schemaLocation=anyURI
    any attributes
>
(annotation?)
</include>

B.7.2.12 List

この要素は、単純型要素を、指定されたデータ型の値のリストとして定義します。

<list
    id=ID
    itemType=QName
    any attributes
>
(annotation?,(simpleType?))
</list>

B.7.2.13 Restriction

この要素は、simpleType、simpleContentまたはcomplexContentでの制限を定義します。

<restriction
     id=ID
     base=QName
     any attributes
>
Content for simpleType:
(annotation?,(simpleType?,(minExclusive|minInclusive|maxExclusive|maxInclusive|
totalDigits|fractionDigits|length|minLength|maxLength|enumeration|whiteSpace|
pattern)*))
Content for simpleContent:
(annotation?,(simpleType?,(minExclusive|minInclusive|maxExclusive|maxInclusive|
totalDigits|fractionDigits|length|minLength|maxLength|enumeration|whiteSpace|
pattern)*)?, ((attribute|attributeGroup)*,anyAttribute?))
Content for complexContent:
(annotation?,(group|all|choice|sequence)?, ((attribute|attributeGroup)*,anyAttribute?))
</restriction>

B.7.2.14 Schema

この要素は、スキーマのルート要素を定義します。

<schema
     id=ID
     attributeFormDefault=qualified|unqualified
     elementFormDefault=qualified|unqualified
     blockDefault=(#all|list of (extension|restriction|substitution))
     finalDefault=(#all|list of (extension|restriction|list|union))
     targetNamespace=anyURI
     version=token
     xmlns=anyURI
     any attributes
>
((include|import|redefine|annotation)*,(((simpleType|complexType|group|
attributeGroup)|element|attribute|notation),annotation*)*)
</schema>

B.7.2.15 Sequence

この要素は、子要素を順序に従って表示する必要があることを指定します。各子要素は0回以上出現可能です。

<sequence
     id=ID
     maxOccurs=nonNegativeInteger|unbounded
     minOccurs=nonNegativeInteger
     any attributes
>
(annotation?,(element|group|choice|sequence|any)*)
</sequence>

次の点に注意してください。

  • 順序は、ドライバでは管理されません。ドライバによって生成されるxxx_ORDER列をロードして、順序を管理する必要があります。

  • maxOccursおよびminOccurs属性はドライバでは管理されません。データのチェック、およびXSDとの照合によるXMLコンテンツの検証を実行することで、これを管理する必要があります。

B.7.2.16 SimpleContent

この要素には、テキストのみの複合型または単純型に関する拡張または制限がコンテンツとして含まれます。

<simpleContent
     id=ID
     any attributes
>
(annotation?,(restriction|extension))
</simpleContent>

B.7.2.17 SimpleType

この要素は、単純型要素を定義します。

<simpleType
     name=NCName
     id=ID
     any attributes
>
(annotation?,(restriction|list|union))
</simpleType>

B.7.3 サポートされていない機能

XMLドライバでは、次の要素および機能はサポートおよび実装されていません。

B.7.3.1 サポートされていない要素

次のスキーマ要素は、XMLドライバではサポートされていません。

  • Any/anyAttribute: anyおよびanyAttribute要素は、スキーマで指定されていないものも含めて、任意の要素または属性を使用してXMLドキュメントを拡張できるようにします。これらの要素はサポートされていません。

  • Key/keyRef/Unique: これらの要素を使用すると、スキーマで制約を定義できます。これらの要素およびその子要素(selector、field)は、無視されます。

  • Union: union要素は、指定された単純データ型の値のリストを定義します。この要素はサポートされていません。

  • Redefine: redefine要素は、単純型、複合型、グループおよび属性グループを外部スキーマから再定義します。この要素はサポートされていません。


警告:

XSDに含まれるAny句またはAnyAttribute句によって許可されるXMLファイル内の要素および属性は、ファイルをロードする際にエラーを引き起こす可能性があります。


B.7.3.2 サポートされていない機能

マルチパス解析は、ODI XMLドライバでは実装されません。