7.10 SQL*Loaderによるオブジェクト、コレクションおよびLOBのロード
実社会のエンティティ(顧客と発注など)のモデル化に必要な列、行、LOBおよびJSONデータベース・オブジェクトを一括ロードできます。
- サポートされるオブジェクト型
SQL*Loaderでは、列オブジェクト型および行オブジェクト型のロードがサポートされています。 - サポートされるコレクション型
SQL*Loaderでは、ネストした表およびVARRAYコレクション型のロードがサポートされています。 - SODAコレクションとSQL*Loader
SQL*Loaderを使用すると、SQL*Loaderユーティリティを使用して、制御ファイルとエクスプレス・モードの両方で外部ドキュメントをSODAコレクションにロードできます。 - サポートされるLOBデータ型
SQL*Loaderは、複数のラージ・オブジェクト型(LOB)をサポートしています。
親トピック: SQL*Loaderの使用方法の理解
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のロード」を参照してください。