2

友達、

フィールドを '|' で終了するように要求されたクライアント データが送信されてきました。

問題は、フィールド値の一部にも「|」が含まれていることです。守っていきたいキャラクターとして。

私のデータファイルの問題行は次のようになります(アドレス「1 | 34-36 ...」の「|」が問題です)

    ID  |   Address                |UPDATEDATE
  1423  |   1|34-36 White Street   |02/01/199

私の.ctlは次のようになります

options(errors=1000)
load data
into table client_address APPEND
fields terminated by '|'
TRAILING NULLCOLS
(
ID          INTEGER EXTERNAL,
4

1 に答える 1

1

データ ファイル内のすべてのフィールドが幅で揃えられている場合は、次の .ctl ファイルを使用できます。

load data
into table client_address APPEND
fields terminated by '~'
TRAILING NULLCOLS
(
line         BOUNDFILLER,
ID           "to_number(trim(substr(:line,1,8)))",
Address      "trim(substr(:line,10,26))",
UPDATEDATE   "to_date(trim(substr(:line,37)),'mm/dd/yyyy')"
)

編集:
フィールドが幅で揃えられていないがAddress、内部に char を含むことができる唯一のフィールドである場合は、'|'この .ctl ファイルを使用します

load data
into table client_address APPEND
fields terminated by '~'
TRAILING NULLCOLS
(
line         BOUNDFILLER,
ID           "to_number(trim(regexp_substr(:line,'^[^|]*')))",
Address      "trim(regexp_replace(:line,'^[^|]*\|(.*)\|[^|]*$','\1'))",
UPDATEDATE   "to_date(trim(regexp_substr(:line,'[^|]*$')),'mm/dd/yyyy')"
)
于 2013-03-07T23:51:15.390 に答える