LOBと同様、コレクションも、プライマリ・データ・ファイル(データ・インライン)またはSDF(データ・アウトライン)のいずれかからロードできます。SDFの詳細は、「セカンダリ・データ・ファイル(SDF)」を参照してください。
コレクション・データをロードする場合、コレクションに属するデータのインスタンスが終了したことをSQL*Loaderに伝える機能が必要です。これには、2つの方法があります。
それぞれのネストした表またはVARRAY
インスタンスにロードされる行または要素の数を指定するには、DDL構文のCOUNT
関数を使用します。COUNT
に指定する値は、数字または数字を含む文字列のいずれかで、制御ファイルでCOUNT
句よりも先に記述する必要があります。この位置の依存性は、COUNT
句に固有です。COUNT(0)
またはCOUNT(cnt_field)
を指定して、カレント行のcnt_field
が0の場合は、NULLIF
句によって上書きされないかぎり、空のコレクション(NULLではない)になります。詳細は、「count_spec」を参照してください。
制御ファイルでCOUNT
句によってフィールドが指定され、そのフィールドがカレント行でNULLに設定されている場合、そのカウントを使用するコレクションは、カレント行でも空に設定されます。
TERMINATED
BY
およびENCLOSED
BY
句を使用して、一意のコレクション・デリミタを指定します。SDF
句が使用されている場合、この方法は使用できません。
制御ファイルでは、コレクションは、列オブジェクトと同様に記述します。詳細は、「列オブジェクトのロード」を参照してください。一部、次のような相違点があります。
コレクションの記述には、前述の2つの機能を使用します。
コレクションの記述には、セカンダリ・データ・ファイル(SDF)を指定できます。
同じSDFのフィールド上にないかぎり、NULLIF
またはDEFAULTIF
句ではSDFのフィールドを参照できません。
フィールド名を引数として使用する句には、同じコレクションのフィールドに対するDDL指定でないかぎり、コレクション内のフィールド名を使用できません。
フィールド・リストには、非FILLERフィールドが1つと、複数のFILLERフィールドが含まれている必要があります。VARRAY
が列オブジェクトのVARRAY
の場合、列オブジェクトの属性は、ネストしたフィールド・リストに記述されます。