【问题标题】:How should I escaping quotes and line breaks for Oracle SQLLoader (sqlldr) importing?我应该如何为 Oracle SQLLoader (sqlldr) 导入转义引号和换行符?
【发布时间】:2009-06-24 19:57:52
【问题描述】:

首先:是的,我知道 CONCATENATE 和 CONTINUEIF,但我可能不够聪明,无法理解文档。我不“明白”他们如何解决我的问题。谢谢...

我必须创建一个文件,以便通过 sqlldr 导入 Oracle DB。

列需要用“~”分隔(不要问。)在创建文件文件时,我对 sqlldr 在引号和换行符方面的行为方式有些担心。

如果一个简单的行包含列值:

One, Hello~World I "Like" you, and Three

我应该如何将它输出到文件中?我的第一个猜测是

One~"Hello~World I "Like" you"~Three

我想用 CTL 文件中指定的 FIELDS TERMINATED BY "~" OPTIONALLY ENCLOSED BY '"' 导入会很容易。我不知道如何处理创建文件时 Like 周围的引号. 那些应该额外逃脱吗?如何?

额外的奖励问题: 这些字段可能包含换行符。如果写出“原始”,它将变成

one~Line
Break~three

我可以使用 CTL 文件中的选项将它们“缝合”在一起吗?中断可能发生在不同的列中,并且每条记录或列可能有多个中断。

提前致谢!

【问题讨论】:

    标签: database oracle sql-loader import


    【解决方案1】:

    经过一些实验,这是我发现的:

    使用时

    FIELDS TERMINATED BY "~" OPTIONALLY ENCLOSED BY '"' 
    

    在CTL文件和表结构中

    key:number, msg:varchar2
    

    处理引号和分隔符的正确方法是

    1~Hello World
    2~"Hello~World"
    3~"Hello ""World"""
    4~"Hello~""World"""
    

    因此,如果数据包含分隔符,请引用整个值并将值中的引号替换为 2 个引号。

    至于换行符,我将在另一个问题中提出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-09
      相关资源
      最近更新 更多