7.10 SQL*Loaderによるオブジェクト、コレクションおよびLOBのロード

実社会のエンティティ(顧客と発注など)のモデル化に必要な列、行、LOBおよびJSONデータベース・オブジェクトを一括ロードできます。

7.10.1 サポートされるオブジェクト型

SQL*Loaderでは、列オブジェクト型および行オブジェクト型のロードがサポートされています。

7.10.1.1 列オブジェクト

表の列が、なんらかのオブジェクト型である場合、その列のオブジェクトは列オブジェクトと呼ばれます。

概念的には、そのようなオブジェクトは、行の単一の列位置に全体が格納されます。これらのオブジェクトにはオブジェクト識別子がなく、参照することはできません。

列オブジェクトのオブジェクト型がNOT FINALであると宣言されると、SQL*Loaderで導出された型(またはサブタイプ)を列オブジェクトにロードできます。

7.10.1.2 行オブジェクト

これらのオブジェクトはオブジェクト表と呼ばれる表に格納され、オブジェクト表にはオブジェクトの属性に対応する列があります。

さらに、そのオブジェクト表にはシステムが生成するSYS_NC_OID$という列があり、その列に、表の各オブジェクトに対してシステムが生成する一意の識別子(OID)が格納されます。他の表の列は、これらのオブジェクトをOIDを使用して参照できます。

オブジェクト表のオブジェクト型がNOT FINALであると宣言されると、SQL*Loaderで導出された型(またはサブタイプ)を行オブジェクトにロードできます。

7.10.2 サポートされるコレクション型

SQL*Loaderでは、ネストした表およびVARRAYコレクション型のロードがサポートされています。

7.10.2.1 ネストされた表

ネストした表は、別の表に列があるように見える表です。

別の表に対して実行できるすべての操作は、ネストした表に対しても実行できます。

7.10.2.2 VARRAY

VARRAYは、可変サイズの配列です。

配列は、要素と呼ばれる、一連の組込み型またはオブジェクトの順序付けられた集合です。各配列の要素は同一の型であり、VARRAY内の要素の位置に対応する一意の番号(index)を持ちます。

VARRAY型の作成時に、最大サイズを指定する必要があります。VARRAY型を宣言すると、リレーショナル表の列のデータ型、オブジェクト型属性、またはPL/SQL変数として使用することができます。

関連項目:

SQL*Loader制御ファイルのデータ定義言語を使用してこれらのコレクション型をロードする方法の詳細は、「コレクション(ネストした表およびVARRAY)のロード」を参照してください。

7.10.3 SODAコレクションとSQL*Loader

SQL*Loaderを使用すると、SQL*Loaderユーティリティを使用して、制御ファイルとエクスプレス・モードの両方で外部ドキュメントをSODAコレクションにロードできます。

Oracle AI Database 26ai以降、SQL*Loaderを使用して、スキーマレス・ドキュメント(JSONやXMLベースのアプリケーション・データなどの固定データ構造を持たないドキュメント)をSODAコレクションとしてOracle AI Databaseにロードできます。SODA (Simple Oracle Document Access)コレクションは、Oracle AI Databaseの表またはビューによってバックアップされる一連のドキュメントです。ドキュメントは表またはビューの行としてOracle AI Databaseに格納され、各コンポーネントはそれぞれの列に格納されます。

SODAドキュメント・コレクションを作成すると、Oracle AI Databaseに次のものが作成されます:

  • 永続的なデフォルトのコレクション・メタデータ。
  • コレクションを格納するための表。

Oracle AI DatabaseアプリケーションのSODAコレクションに外部ドキュメントを挿入、追加および置換できます

SODAコレクションをロードするには、SQL*Loaderユーティリティに次の1つから3つの情報を指定します:

  • $CONTENT: ロードするコンテンツ(必須)。

    このフィールドは、実際のテキスト・ドキュメント、または1つ以上のドキュメントを含むセカンダリ・データ・ファイルにすることができます。指定できるコンテンツには、次の2つのタイプがあります:

    • RAW(*): テキスト・ドキュメントが制御ファイルまたはデータ・ファイルに直接格納されている場合、またはドキュメントがINFILE句で指定されている場合、RAW(*)データ・フィールドを使用します。
    • CONTENTFILE(soda_filename): CONTENTFILE名を使用して、SQL*Loaderでデータをロードするセカンダリ・データ・ファイル名(soda_filename)を指定します。指定したセカンダリ・データ・ファイルに1つ以上のドキュメントを含めることができます。
  • $KEY: ドキュメントを識別するキー(オプション)

    コレクションでは、各ドキュメントにコレクション固有のドキュメント・キーが必要です。ただし、SODAコレクションでキーが自動的に生成される場合は、キーを指定する必要はありません。$KEYが指定されている場合、キーとコンテンツの間に1対1の関係があります。

  • $MEDIA: コンテンツのタイプを説明するメディア・タイプ(オプション)

    1つのメディア・タイプのドキュメントを保持するようにSODAコレクションが定義されている場合、$MEDIAは必要ありません。デフォルトのメディア・タイプはJSONですが、これはSODA_MEDIAキーワードを使用して変更できます。

7.10.4 サポートされるLOBデータ型

SQL*Loaderは、複数のラージ・オブジェクト型(LOB)をサポートしています。

今回のリリースのSQL*Loaderでは、4つのLOBデータ型のロードをサポートしています。

  • BLOB: 構造化されていないバイナリ・データを含むLOB。

  • CLOB: 文字データを含むLOB。

  • NCLOB: データベースの各国語文字セットの文字を含むLOB。

  • BFILE: サーバー側のオペレーティング・システム・ファイルのデータベース表領域外に格納されるBLOB

LOBは、列のデータ型にすることができ、NCLOB以外はオブジェクトの属性のデータ型にすることもできます。LOBには、実際の値、NULLまたは「値なし(空)」を指定できます。

JSON列は、スカラーとLOBのロードに使用されるものと同じ方法を使用してロードできます

関連項目:

SQL*Loader制御ファイルのデータ定義言語を使用してこれらのLOB型をロードする方法の詳細は、「LOBのロード」を参照してください。