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

Oracle Data Integrator Driver for XML (XMLドライバ)は、Oracle Data IntegratorでXMLドキュメントをデータ・サーバーとして使用することを可能にします。

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

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でサポートされている機能は次のとおりです。

  • 標準のSQL (Structured Query Language)構文

  • 相関サブ問合せ、内部および外部結合

  • ORDER BYおよびGROUP BY

  • COUNT、SUM、MIN、MAX、AVGおよびその他のファンクション

  • 標準のSQLファンクション

  • トランザクションの管理

  • 参照整合性(外部キー)

  • XMLデータに対して行った変更のXMLファイルへの保存

XMLの処理の概要

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

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

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

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

XMLからSQLへのマッピング

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

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

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

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

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

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

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

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

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

    • <parent_element_name>FK: 階層内で現在の要素を親とリンクするための列です。親要素の<element_name>PK値と一致する値が含まれます。XML再帰の場合、親要素または親要素の祖先を同じ表に配置できます。

  • 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ファイルと同期化させるには、これらのレコードをリレーショナル・スキーマにロードする必要があります。

XML名前空間

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

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

注意:

v3モードでは、表名に接頭辞の<namespace>_が付きません。

スキーマの管理

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

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

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

スキーマの格納

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

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

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

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

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

    • スキーマの格納の持続

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

複数のスキーマ

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

デフォルト・スキーマは、一時データの格納に使用される特定のスキーマです。デフォルト・スキーマは読取り専用で、XMLファイルの格納には使用できません。各XMLファイルに対して1つのスキーマを作成することをお薦めします。

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

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

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

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

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

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

注意:

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

大/小文字の区別

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

ロード/同期化

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

ロック

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

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

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

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

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

インストールおよび構成

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

この項では、次の項目について説明します。

注意:

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

ドライバの構成

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

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

  • URL構文: jdbc:snps:xml

プロパティ表に入力されるプロパティを表B-1で説明します。

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

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

blank_attribute_as_column

False

いいえ

このプロパティをtrueに設定した場合、自身の子要素を持たないXMLファイルの空の要素は、表ではなく列とみなされます。

file

-

はい

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

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

dtd

-

いいえ

記述ファイル。このファイルは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

-

いいえ

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

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

read_only

False

いいえ

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

schema

-

いいえ

リレーショナル・スキーマおよびXMLデータを格納するデータベース・スキーマです。XMLファイルのロード先となるスキーマの名前。このプロパティが欠落している場合は、XMLファイル名に基づいて、スキーマ名が自動的に生成されます。

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

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

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

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

standalone

False

いいえ

このオプションをtrueに設定すると、この接続のスキーマは、他のすべてのスキーマから完全に分離されます。このオプションでは、各スキーマを分離したまま複数の接続に対して同じスキーマ名を指定できます。このオプションを使用すると、このスキーマの表に他のスキーマからアクセスできません。また、この接続で他のスキーマの表にもアクセスできません。スキーマは、この接続のみに制限されます。他の接続ではこのスキーマを認識できません。このオプションはインメモリーHSQL中間データベースに対してのみアクティブです。このオプションを使用すると、すべてのステージング・スキーマに対してまったく新しいHSQLインスタンスがインメモリーに作成されるため、エージェントによるメモリー消費が増えます。同じトポロジを持つ複数のパラレル・ジョブで、ジョブが相互に重複することを回避するのに役立ちます。注意: このオプションは、外部データベースを使用する場合には適用できません。データ・サーバーの「スタンドアロン」プロパティがtrueに設定されている場合、データを格納してから書き出すためのターゲット・データストアとして使用することはできません。その理由は、「スタンドアロン」インスタンスが完全に分離されるためです。

注意: 「スタンドアロン」プロパティは、次の場合に使用できます。

  • f=パラメータがJDBC接続URLまたはプロパティに存在しない

  • LOAD FILEコマンドを使用して、同じファイルを並行してロードしようとしていない

    その理由は、ソース・ファイルの読取り前に、ソース・ファイル上のすべての操作が完了するまで、ドライバによってソース・ファイルがロックされるためです。したがって、パラレル・セッションがある場合は、最初のセッションが完了するまで、最初のセッションによってファイルがロックされます。

    注意: f=パラメータが存在する場合、接続を開くと即座に、ドライバによってファイルがロックされ、f=パラメータが読み取られます。ファイルへのすべての接続が閉じられたときにのみ、ファイルがロック解除されます。明示的なUNLOCKコマンドはありませんが、操作の目的を明確にしてから、注意してこのコマンドを使用してください。

ns_prefix_generation

auto

いいえ

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

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

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

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

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

no_default_ns

False

いいえ

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

no_closing_tags

False

いいえ

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

db_props

-

いいえ

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

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

load_data_on_connect

True

いいえ

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

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

drop_on_disconnect

False

いいえ

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

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

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

ignore_unknown_elements

True

いいえ

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

useimplicitmaxvalue

False

いいえ

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

generate_dtd

auto

いいえ

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

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

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

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

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

java_encoding

UTF8

いいえ

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

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

useimplicitmaxvalue

False

いいえ

このプロパティをyesに設定した場合、XSDでmaxOccursが指定されていない要素は、複数値(maxOccurs ="unbounded")とみなされます。

xml_encoding

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

False

いいえ

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

compat_mode

v3

いいえ

マッピング・モードとの互換性を示します。このプロパティに指定できる値は次のとおりです。

  • v1は、1.x互換性モードのv1_compatibility=trueに対応します。

  • v2は、カスタム記述されたXSDパーサーを使用する10g/11g互換性モードを示します。

    DTDを使用する場合やXMLファイルのみを使用する場合は、JDBC URLでcompat_mode=v2を指定する必要があります。次に例を示します。

    jdbc:snps:xml?file=/tmp/myfile.xml&compat_mode=v2

    jdbc:snps:xml?f=/tmp/myfile.xml&compat_mode=v2

  • v3は、XDK XSDパーサーとの互換性を示します。

    DTDを使用する場合やXMLファイルのみを使用する場合、compat_mode=v3はサポートされていません。たとえば、次の構文はサポートされていません。

    jdbc:snps:xml?file=/tmp/myfile.xml&compat_mode=v3

    jdbc:snps:xml?f=/tmp/myfile.xml&compat_mode=v3

compat_mode=v3の場合、v1_compatibilityプロパティは無視されます。

numeric_ids

True

いいえ

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

id_length

-

いいえ

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

no_batch_update

False

いいえ

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

add_schema_bundle

-

いいえ

追加のスキーマ・バンドル・ファイル。このプロパティは、接続時に追加のスキーマを作成する必要があることを示します。これらの追加のスキーマに関する記述は、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

-

いいえ

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

注意: このオプションはv3モードではサポートされていません。

transform_nonascii

True

いいえ

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

max_table_name_length

-

いいえ

表名の最大長(内部/外部DBでサポートされている値に無関係)。

max_column_name_length

-

いいえ

列名の最大長(内部/外部DBでサポートされている値に無関係)。

case_sens

True

いいえ

表名および列名で大文字と小文字が区別されるかどうかを示します。名前比較はこれに基づいて実行されます。

default_length_varchar

255

いいえ

XMLアノテーションおよびドキュメント要素の格納に使用されるVARCHAR列のデフォルトの長さを示します。

default_type_varchar

False

いいえ

このプロパティをtrueに設定すると、デフォルトのデータ型がサイズ255のVARCHARになり、falseに設定するとLONGデータ型が使用されます。

pipeline_config_file

-

-

前/後処理の構成ファイル。

複数のスキーマの自動作成

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

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

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

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

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

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

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

注意:

メモリー内エンジンの使用はベスト・プラクティスではなく、複合ファイル・テクノロジを使用したときに問題が発生する場合があります。

エラーの原因: メモリー内HSQLを本番で使用することはお薦めしません。ODIの範囲を超えてメモリー・リークが発生し、最終的にJVMが停止します。開発のみでの使用を対象としています。Oracle、MySQL、MS SQLServerなどの外部DBに切り替えることをお薦めします。

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

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

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

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

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

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

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

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

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

注意:

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

http://www.oracle.com/technetwork/middleware/data-integrator/documentation/index.html

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

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

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

プロパティは、表B-2に示すようにプロパティ表で直接設定できます。

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

プロパティは、トポロジ・ナビゲータの「JDBC」タブの「JDBC URL」の下に表示される「プロパティ」表で指定できます。プロパティは、表B-2に示すようにプロパティ表で直接設定できます。

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

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

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

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

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

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

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

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

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

注意:

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

外部データベースのプロパティをURLで設定またはオーバーライドできます。ファイルをオーバーライドするには、URLの下のプロパティ表を使用します。次に例を示します。

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

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

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

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

dp_driver

-

はい

JDBCドライバ名。

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

dp_url

-

はい

JDBC URL

dp_user

-

はい

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

dp_password

-

はい

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

注意: パスワードを暗号化するには、encode.bat (cmd|sh)コマンドを使用します。詳細は、『Oracle Data Integratorの管理』パスワードのエンコーディングに関する項を参照してください。

dp_schema

-

はい

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

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

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

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

v3モード使用時の制限: 外部データベースの使用時は、提供されたスキーマ名か、計算されたスキーマ名が存在することを確認してください。schemaドライバ・プロパティの値は、外部データベースのschemaプロパティ値と一致する必要があります。そうでない場合は、エラーが発生します。

dp_catalog

-

はい

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

dp_drop_on_connect

False

いいえ

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

dp_create_tables

auto

いいえ

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

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

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

dp_create_indexes

True

いいえ

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

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

dp_numeric_scale

-

いいえ

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

dp_truncate_before_load

True

いいえ

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

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

dp_ids_in_db

True

いいえ

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

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

dp_drop_tables_on_drop_schema

True

いいえ

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

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

dp_use_prepared_statements

True

いいえ

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

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

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

dp_use_batch_update

True

いいえ

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

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

通常、データの挿入はバッチ更新を使用した方が速くなります。次の条件が満たされている場合にのみtrueに設定してください。

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

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

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

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

dp_batch_update_size

30

いいえ

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

dp_commit_periodically

True

いいえ

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

次の条件が満たされている場合にのみtrueに設定してください。

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

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

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

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

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

dp_num_inserts_before_commit

1000

いいえ

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

dp_reserve_chars_for_column

3

いいえ

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

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

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

dp_reserve_chars_for_table

3

いいえ

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

dp_varchar_length

255

いいえ

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

このプロパティは、注釈要素やドキュメント要素には適用されません。これらの要素には、かわりにdp_default_length_varcharプロパティを使用してください。

dp_default_type_varchar

N

いいえ

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

dp_default_length_varchar

255

いいえ

XMLアノテーションおよびドキュメント要素の格納に使用されるVARCHAR列のデフォルトの長さ。このプロパティは、dp_default_type_varcharプロパティが「yes」に設定されている場合にのみ有効です。

次に例を示します。

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

dp_numeric_length

10

いいえ

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

dp_unicode

False

いいえ

MS SQL Serverの場合:

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

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

dp_multi_user_safe

False

いいえ

これを使用して、行IDの生成方法を制御します。multi_user_safeをtrueに設定した場合、各ID生成のタスクはDBに割り当てられます。falseに設定した場合、データ・ロードの開始時に、ID表に格納されているIDが取得され、格納されたそのデータがメモリー内に移されます。これは、データ・ロードの終了時にDBにプッシュされます。

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

driver=oracle.jdbc.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.SQLServerDriver
url=jdbc:microsoft:sqlserver://SERVER_NAME:PORT;SelectMethod=cursor
user=USER_NAME
password=ENCODED_PASSWORD
schema=OWNNER_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

ドライバ・コマンドの詳細

注意:

これらのコマンド内のSCHEMAという語は、物理アーキテクチャに存在するXMLドライバ・データ・サーバーURLでs=....を使用して設定されている文字列値を表します。

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

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

表記規則

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

  • [ A ]は、Aがオプションであることを意味します。

  • [ A | B ]は、AまたはBだがパラメータがオプションであることを意味します。

  • { B | C }は、BまたはCを使用する必要があることを意味します。

  • [A] [B]は、順序付けされていない一連の引数を意味します。

  • ( および )は、記号「(」および「)」を意味します。

  • キーワードは大文字です。

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

CREATE FILE

EMPTYオプションが指定されている場合、関連するXSDまたはDTDファイルに存在するすべての要素(オプションの要素を含む)が含まれる空のXMLインスタンス・ファイルを作成します。ただし、これらのファイルで宣言されているXML属性は、作成されたXMLインスタンス・ファイルでは参照されません。

これらの属性の処理方法は、compat_mode v1/v2とv3では異なります。v1/v2モードでは属性は書き出されませんが、v3モードでは属性も書き出されます。

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_TAGS

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

NO_DEFAULT_NS

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

備考

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

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

CREATE FOREIGNKEYS

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

注意:

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

CREATE FOREIGNKEYS

備考

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

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_TAGS

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

NO_DEFAULT_NS

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

備考

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

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

CREATE SCHEMA

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

注意:

このコマンドは、外部データベースでは使用できません。

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

パラメータ

WITH DTD

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

REPLACE

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

ROOTELT

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

READONLY

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

COMPAT_MODE

マッピング・モードとの互換性を示します。このプロパティに指定できる値は次のとおりです。

  • v1は、1.x互換性モードのv1_compatibility=trueに対応します。

  • v2は、10g/11gモードです。これはデフォルトのモードです。

    DTDを使用する場合やXMLファイルのみを使用する場合は、JDBC URLでcompat_mode=v2を指定する必要があります。次に例を示します。

    jdbc:snps:xml?d=/tmp/myDTD.dtd&compat_mode=v2

    jdbc:snps:xml?f=/tmp/myfile.xml&compat_mode=v2

  • v3は、XDK XSDパーサーとの互換性を示します。DTDを使用する場合やXMLファイルのみを使用する場合、compat_mode=v3はサポートされていません。たとえば、次の構文はサポートされていません。

    • jdbc:snps:xml?d=/tmp/myDTD.dtd&compat_mode=v3

    • jdbc:snps:xml?f=/tmp/myfile.xml&compat_mode=v3

    compat_mode=v3の場合、v1_compatibilityプロパティは無視されます。

注意:

SYNCHRONIZEコマンドを使用した場合、v3オプションで作成されたDBスキーマのみがv3モードでDTD/XSDを解析します。v3モードでは、DBプロパティに対応するスキーマ名の値のすべての制限が、スキーマ名などに適用されます。

JAVA_ENCODING

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

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

XML_ENCODING

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

備考

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

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

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

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

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

DROP FOREIGNKEYS

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

DROP FOREIGNKEYS

DROP SCHEMA

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

DROP SCHEMA [<schema_name>]

LOAD FILE

<file_name> XMLファイルを、指定された<schema_name> XMLスキーマにロードします。ON SCHEMAパラメータでスキーマ名が指定されていない場合、このXMLファイル名を使用してスキーマ名が生成されます。指定された名前または生成された名前のスキーマが見つかると、そのスキーマのプロパティが継承されます。指定された名前または生成された名前が実行時に存在しない場合、LOAD FILEコマンドで指定されたプロパティのみを含む新しいXML JDBC URLが作成されます。このスキーマは、現在のスキーマのプロパティのいずれも継承しません。

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>]

INSERT_ONLYが存在しない場合は、次の手順に従ってください。

i) ON SCHEMAを使用して、コマンドにスキーマ識別子が提供されているかどうかを確認する

ii) 提供されていない場合は、XMLファイル名を使用して、スキーマ識別子(最初の5文字)を生成する

このスキーマがすでに存在し、コマンドにREPLACEオプションがない場合、ドライバによってエラーが返されます。このスキーマがすでに存在し、REPLACEオプションがある場合は、既存のスキーマが破棄された後、スキーマが再作成され、ファイルからスキーマにデータがロードされます。

スキーマが存在しない場合、新しいスキーマを作成し、ファイルをロードします。

INSERT_ONLYが存在する場合は、次の手順に従ってください。

i) 現在のスキーマを使用する

ii) ON SCHEMAが提供されている場合は、その名前のスキーマが存在するかどうかを確認する。存在する場合は、そのスキーマを使用します。そうでない場合は、現在のスキーマを引き続き使用します。ファイルをこのスキーマに読み込みます。

パラメータ

WITH DTD

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

INSERT_ONLY

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

INSERT_ONLYオプションはXMLファイルからデータのみを挿入します。既存のデータは影響されません。

既存のデータが挿入されたデータと同一の場合、エラーが発生します。

ON SCHEMA

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

REPLACE

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

REPLACEオプションはスキーマ全体をドロップします。スキーマがドロップされると、すべての接続もクローズされます。

「スタンドアロン」データ・サーバーの場合、すべての接続がクローズされると、インメモリーHSQL DB自体が破棄されます。

次に、完全に新しいデータベース・インスタンスが「スタンドアロン」データベースサーバーに作成されます。

すべての場合で、完全に新しいスキーマおよび表が作成され、データがXMLファイルから挿入されます。

同一のスキーマ名をまったく異なるXML構造に使用する場合にのみ、このオプションを使用します。

このオプションを使用すると、パフォーマンスが著しく低下すると推測されます。

データ・サーバーが「スタンドアロン」モードで、LOAD FILEコマンド後に同一のデータ・サーバーを再び使用すると、問題が発生します。

READONLY

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

ROOTELT

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

AUTO_UNLOCK

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

DB_PROPS

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

備考

  • ファイル名は二重引用符で囲みます。

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

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

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

SET SCHEMA

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

SET SCHEMA <schema_name>

備考

スキーマの名前を指定する必要があります。

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を実行している場合はそれ以降のスキーマが同期化されます。

注意:

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

UNLOCK FILE

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

UNLOCK FILE <file_name>

TRUNCATE SCHEMA

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

TRUNCATE SCHEMA [<schema_name>]

TRUNCATEコマンドはスキーマのすべての表からすべてのデータを削除するだけです。何もドロップされません。接続はクローズされません。

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コンソールに表示します。デフォルトでは、コンソールには何も表示されません。

WRITE MAPPING FILE

要素/属性名から表/表.列名へのマッピングを要素/属性ごとに指定されたファイルに書き出します。マッピング・ファイルは、XSD/DTDファイルに作成されたリレーショナル構造を理解するために役立ちます。このコマンドは、スキーマがv3モードで作成されているときにのみ使用できます。そうでない場合は例外がスローされます。

WRITEMAPPINGFILE FILE <file-path> [FROM SCHEMA <schema-name>] 
	   [JAVA_ENCODING <java_encoding> XML_ENCODING <xml-encoding>]

パラメータ

file_p ath

生成されるマッピング・ファイルの名前。

FROM_SCHEMA

オプションのFROM SCHEMAパラメータを指定しない場合、現在のスキーマが使用されます。

JAVA_ENCODING

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

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

XML_ENCODING

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

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

サポートされているエンコーディングのリストは、次のURLにあります。http://download.oracle.com/javase/6/docs/technotes/guides/intl/encoding.doc.html

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

例B-1 マッピング・ファイル

<?xml version = '1.0' encoding = 'UTF-8'?>
<personnel xmlns:x2r="http://www.oracle.com/odi/xml-mapping" x2r:tableName="PERSONNEL"> 
   <person x2r:tableName="PERSON" id="ID" select="SELECT_">   
      <email x2r:tableName="EMAIL"></email>
      <link x2r:tableName="LINK" manager="MANAGER" subordinates="SUBORDINATES"></link>
      <name x2r:tableName="NAME">
         <given x2r:columnName="GIVEN"></given>
         <family x2r:columnName="FAMILY"></family>
      </name>
      <url x2r:tableName="URL" href="HREF"></url>
   </person>
</personnel>

SQL構文

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

この項では、次の項目について説明します。

注意:

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

SQL文

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

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

COMMIT

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

COMMIT [WORK]
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です。

DELETE

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

DELETE FROM <table_name> [ WHERE <expression> ]
DISCONNECT

この接続を終了します。

DISCONNECT

備考

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

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

DROP TABLE

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

DROP TABLE <table_name>
INSERT INTO

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

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

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

ROLLBACK
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 ]
SET AUTOCOMMIT

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

SET AUTOCOMMIT { TRUE | FALSE }
UPDATE

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

UPDATE table SET column = <expression> [, ...] [WHERE <expression>]
式、条件および値
<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バイトです。

SQLファンクション

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

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

ファンクション 説明

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-4に文字列ファンクションをリストします。

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

ファンクション 説明

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-5に日時ファンクションをリストします。

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

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

ファンクション 説明

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-6にシステム・ファンクションをリストします。

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

ファンクション 説明

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を別のデータ型に変換します。

実装されるJDBC API機能

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

表B-7 JDBC APIの機能

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

バッチ更新

2.0コア

はい

Blob/Clob

2.0コア

はい

JNDIデータソース

2.0 オプション

はい

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

-

はい

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

3.0

はい

Unicodeサポート

-

いいえ

分散トランザクション

2.0 オプション

いいえ

接続プーリング

2.0 オプション

いいえ

クラスタ・サポート

-

いいえ

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

表B-8 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 オプション

いいえ

リッチ・メタデータ

XMLスキーマに基づくRDB構造を作成する場合は、ドライバにメタデータを提供できる柔軟性が必要です。たとえば、要素/属性が同じローカル名を持つ場合、RDB表/列の名前が競合する可能性があります。

ODI XMLドライバは、x2rネームスペース(http://www.oracle.com/odi/xml-mapping)の属性を要素/属性(x2r:tableName/x2r:columnName)にアタッチします。競合する名前がメタデータ属性を持たない場合は、競合しない表/列の名前が取得されるまで、増分する番号がそれらに追加されます。

新しいオブジェクト・モデルは、要素/属性ごとにxpathとtable/table.columnの名前の間のマップを保持します。

2つの異なる場所に同じ名前および同じタイプの要素が2つ存在する場合、データの格納には同じ表が使用されますが、データを区別するために親要素へのFK参照が使用されます。新しい実装によって新しい表が作成されます。表B-9に表の属性をリストします。

表B-9 表の属性

属性 タイプ 説明

x2r:tableName

文字列

ローカル名が一致するリストまたは列挙であるRDB表/属性に解決される要素にアタッチされます。

x2r:columnName

文字列

ローカル名が一致する属性にアタッチされるか、列にマップされるが、ローカル名が互いに一致するか、それを包含するタイプの属性と一致する要素の属性にアタッチされます。

x2r:columnDataType

文字列

提供されるマッピング表からデータ型情報を文字列として提供できます。

ドライバが列または属性にマップする要素にのみアタッチできます。このパラメータが指定されている場合、ユーザーはデータ型に必要なx2r:columnLengthまたはx2r:columnPrecision (あるいはその両方)を指定する必要もあります。

x2r:columnLength

整数

列の長さ。

デフォルトでは、ドライバにハードコードされている値が使用されます。JDBC URLでは、VARCHARとNUMERICのグローバル・オーバーライド・オプションがあります。この属性を指定した場合、デフォルト値とグローバル・オーバーライドの両方がオーバーライドされます。

ドライバが列または属性にマップする要素にのみアタッチできます。

x2r:columnPrecision

整数

列の精度。これを使用できるデータ型の場合のみ、ドライバによって使用されます。適用される値の決定時には、columnLengthと同じロジックが使用されます。

ドライバが列または属性にマップする要素にのみアタッチできます。

次の例に、リッチ・メタデータを含むXSDを示します。

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:x2r="http://www.oracle.com/odi/xml-mapping">
 <xs:element name="root">
  <xs:complexType>
   <xs:sequence>
     <!--  Example for redefining table name  -->
    <xs:element name="person" maxOccurs="unbounded" x2r:tableName="CUSTOMER">
     <xs:complexType>
      <xs:sequence>
       <!--  Example for redefining column name  -->
       <xs:element name="given" type="xs:string" x2r:columnName="FIRST"/>
       <xs:element name="last" type="xs:string"/>
       <!--  Example for redefining column length  -->
       <xs:element name="address" type="xs:string" x2r:columnLength="400"/>
       <!--  Example for redefining column type  -->
       <xs:element name="notes" type="xs:string" x2r:columnDataType="CLOB"/>
      </xs:sequence>
     </xs:complexType>
    </xs:element>
   </xs:sequence>
  </xs:complexType>
 </xs:element>
</xs:schema>

様々なデータベースに対してサポートされているユーザー指定型

表B-10に、様々なデータベースに対してサポートされているユーザー指定型の詳細を示します。これ以外の型名を使用すると、例外が発生します。

表B-10 各データベースに対してサポートされているユーザー指定型

タイプ HSQL Oracle MySQL MS SQL Server

SMALLINT

X

X

X

INTEGER

X

X

REAL

X

X

NUMERIC

X

X

NUMBER

X

FLOAT

X

X

X

DOUBLE

X

X

DECIMAL

X

X

CHAR

X

X

X

X

NCHAR

X

X

X

VARCHAR

X

X

X

X

VARCHAR2

X

NVARCHAR2

X

BLOB

X

X

X

CLOB

X

X

NCLOB

X

TEXT

X

X

DATE

X

X

X

TIME

X

X

X

TIMESTAMP

X

X

X

X

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

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

XMLスキーマ仕様の詳細は、W3Cの仕様(http://www.w3.org/TR/xmlschema-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

サポートされている要素

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

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

注意:

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

All

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

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

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

この要素を使用すると、スキーマで指定されていない要素を使用してXMLドキュメントを拡張できます。

<any
    id=ID
    maxOccurs=(nonNegativeInteger|unbounded):1
    minOccurs=nonNegativeInteger:1
    namespace=((##any|##other)|List of (anyURI|(##targetNamespace|##local))):##any
    processContents=(lax|skip|strict):strict
    any attributes
>
(annotation?)
</any>
AnyAttribute

この要素を使用すると、スキーマで指定されていない属性を使用してXMLドキュメントを拡張できます。

<anyAttribute
    id=ID
    namespace=((##any|##other)|List of (anyURI|(##targetNamespace|##local))):##any
    processContents=(lax|skip|strict):strict
    any attributes
>
(annotation?)
</anyAttribute>
AnyType

このXMLスキーマ・タイプは、すべてのXMLスキーマ・タイプのルート・タイプです。

<xsd:element name="something" type="xsd:anyType"/>
属性

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

<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属性は、属性に対してドライバによってマップされる列が必須かどうかを定義します。

AttributeGroup

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

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

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

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

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

ComplexContent

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

<complexContent
    id=ID
    mixed=true|false
    any attributes
>
(annotation?,(restriction|extension))
</complexContent>
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>
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は、正しく処理されません。

Extension

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

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

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

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

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

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

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

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

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

<list
    id=ID
    itemType=QName
    any attributes
>
(annotation?,(simpleType?))
</list>
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>
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>
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コンテンツの検証を実行することで、これを管理する必要があります。

SimpleContent

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

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

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

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

サポートされていない機能

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

サポートされていない要素

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

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

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

v3モードで、サポートされていないXSD要素が検出された場合には、エラーが発生します。

警告:

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

サポートされていない機能

v3モードでは、マルチパス解析がサポートされています。他のモードでは、マルチパス解析はサポートされません。

サポートされていないデータ型

次のデータ型はサポートされていません。

  • gYear

  • gYearMonth

  • gMonth

  • gMonthDay

  • gDay

  • language

  • ENTITY

  • ENTITIES

  • NOTATION

  • IDREFS