SQL Loader - 如何转义终止字符

时间:2013-03-07 22:50:35

标签: oracle sql-loader

我已经向我发送了一个客户端数据,请求将字段以“|”结尾

问题是,一些字段值也有“|”作为我们需要保留的角色。

我的数据文件中的问题行看起来像这样(地址中的“|”“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,

1 个答案:

答案 0 :(得分: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')"
)