如何转义SQL加载器数据文件中的封闭字符?
我有一个SQL*加载程序控制文件,其中有一行类似于以下内容:如何转义SQL加载器数据文件中的封闭字符?,sql,oracle,plsql,oracle10g,sql-loader,Sql,Oracle,Plsql,Oracle10g,Sql Loader,我有一个SQL*加载程序控制文件,其中有一行类似于以下内容: FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '#' 通常,我会使用引号,但如果在多行字符串中使用,这似乎会破坏emacs的python语法突出显示。问题是我们正在加载一个ADDRESS\u LINE\u 2列,其中一百万条记录中只有7000条正在加载,因为它们有如下行: FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '#' …(其
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '#'
通常,我会使用引号,但如果在多行字符串中使用,这似乎会破坏emacs的python语法突出显示。问题是我们正在加载一个ADDRESS\u LINE\u 2
列,其中一百万条记录中只有7000条正在加载,因为它们有如下行:
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '#'
…(其他栏目)、Apt#2(其他栏目)
这当然会导致错误。有没有办法转义封闭字符,这样就不会发生这种情况?还是我只需要选择一个更好的封闭字符
我查阅了文档,但似乎没有找到答案。我找到了
如果相邻遇到两个分隔符,则在数据值中使用该分隔符的单个匹配项。例如,“DON'T”存储为DON'T。但是,如果字段仅由两个分隔符组成,则其值为null
我找到了
如果相邻遇到两个分隔符,则在数据值中使用该分隔符的单个匹配项。例如,“DON'T”存储为DON'T。但是,如果字段仅由两个分隔符组成,则其值为null
不幸的是,
SqlLoader
在检查字段的最大长度时同时计算分隔符的两次出现。例如,DON'T将在CHAR(5)
字段中被拒绝,且ORA-12899:值对于blah.blah2列太大(实际值:6,最大值:5)
。
至少在我的11gR2。没有在其他版本中尝试过…不幸的是,
SqlLoader
在检查字段的最大长度时同时计算分隔符的两次出现。例如,DON'T将在CHAR(5)
字段中被拒绝,且ORA-12899:值对于blah.blah2列太大(实际值:6,最大值:5)
。
至少在我的11gR2。没有在其他版本中尝试过