如何转义SQL Loader数据文件中的机箱字符?

时间:2009-09-19 15:09:33

标签: sql oracle plsql oracle10g sql-loader

我有一个SQL * Loader控制文件,其行如下:

FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '#'

通常情况下,我会使用引号,但如果在多行字符串中使用,这似乎会破坏emacs的python语法高亮显示。问题是我们正在加载一个ADDRESS_LINE_2列,其中只有7,000个记录正在加载,因为它们有这样的行:

  

......(其他专栏),Apt#2,(其他专栏)......

这当然会导致错误。有没有办法逃脱封闭的角色,所以这不会发生?或者我只需要选择一个更好的封闭角色?

我查看了文档,但似乎没有找到答案。

2 个答案:

答案 0 :(得分:5)

我发现了......

  

如果彼此相邻地遇到两个分隔符,则在数据值中使用一次分隔符字符。例如,'DON''T'存储为DO NOT。但是,如果该字段仅包含两个分隔符,则其值为null。

Field List Reference

答案 1 :(得分:0)

不幸的是,SqlLoader在检查字段的最大长度时计算分隔符的两次出现。例如,不要将在CHAR(5)字段中被ORA-12899: value too large for column blah.blah2 (actual: 6, maximum: 5)拒绝。 至少在我的 11gR2 中。没试过其他版本......