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 回答