pos_spec句を使用して、レコード内の列の位置を指定します。STRING SIZES ARE IN句を設定して、pos_specがバイト位置と文字位置のどちらを参照するかを決定します。可変幅キャラクタ・セットで文字位置を使用すると、固定幅キャラクタ・セットで文字位置を使用するより大幅に時間がかかります。pos_specが文字位置に使用されると、バイナリ文字データとマルチバイト文字データは、同じデータ・ファイルには指定できません。指定した場合の結果は保証されません。pos_spec句の構文は次のとおりです。
*パラメータで、フィールドが前のフィールドの直後のバイトまたは文字から始まることを指定します。これは、可変長フィールドの後に固定長フィールドが続く場合に有効です。このオプションは、レコードの最初のフィールドには使用できません。
incrementパラメータを使用して、フィールドの開始位置を前のフィールドの終了位置からの固定のバイト数または固定の文字数で設定します。*-incrementを使用して、フィールドの開始位置をレコードの現在の位置の前に指定します。*+incrementを使用して、開始位置を現在の位置の後に移動します。
endパラメータを使用して、フィールドの終了バイトをレコード内の絶対バイトまたは絶対文字オフセットで指定します。startをendとともに指定する場合、endは、startより小さくできません。*またはincrementをendとともに指定し、startが特定のレコードのendより大きいオフセットと評価された場合、レコードは拒否されます。
lengthパラメータで、フィールドの終了位置を開始位置からの固定のバイト数または文字数で指定します。開始位置を*で指定すると、固定長フィールドに有効です。
次に、pos_specの使用例を示します。その後に、ロードが可能なデータ・ファイルのサンプルを示します。
CREATE TABLE emp_load (first_name CHAR(15),
last_name CHAR(20),
year_of_birth INT,
phone CHAR(12),
area_code CHAR(3),
exchange CHAR(3),
extension CHAR(4))
ORGANIZATION EXTERNAL
(TYPE ORACLE_LOADER
DEFAULT DIRECTORY ext_tab_dir
ACCESS PARAMETERS
(FIELDS RTRIM
(first_name (1:15) CHAR(15),
last_name (*:+20),
year_of_birth (36:39),
phone (40:52),
area_code (*-12: +3),
exchange (*+1: +3),
extension (*+1: +4)))
LOCATION ('info.dat'));
Alvin Tolliver 1976415-922-1982
Kenneth Baer 1963212-341-7912
Mary Dube 1973309-672-2341