【问题标题】:How to include commas in Oracle external table如何在 Oracle 外部表中包含逗号
【发布时间】:2020-06-12 19:44:18
【问题描述】:

我有一个管道分隔文件,其中最后一个字段包含逗号,如下所示:

COLOR|CAT|CODES
Red|Pass|tiger, 12@fol, letmein
Blue|Pass|jkd@332, forpw, wonton
Gray|Pass|rochester, tommy, 23$ai, 

我用空格终止最后一列,一切正常,没有错误,除了它只会包含/读取最后一列中的第一个值和第一个逗号,例如Tiger、jkd@332 等。显然是因为逗号后面的空格。

如何在不出现任何错误的情况下包含逗号?我已经尝试过" "/r/n/r/n,甚至在最后一列中排除了"terminated by",虽然这些可以包含逗号,但我会得到ORA-29913和@987654328每次我从外部表(包含数千条记录)中选择所有时,@reject 错误。

我的拒绝限制为10,但我不想将其更改为UNLIMITED,因为我不想忽略这些错误,我也无法更改文件。

我的代码:

    --etc..
    FIELDS TERMINATED BY '|'
            OPTIONALLY ENCLOSED BY '"'
            MISSING FIELD VALUES ARE NULL
    --etc..
    CODES CHAR TERMINATED BY WHITESPACE

【问题讨论】:

    标签: sql oracle external-tables


    【解决方案1】:

    方法如下:

    SQL> create table color (
      2    color      varchar2(5),
      3    cat        varchar2(5),
      4    codes      varchar2(50)
      5  )
      6  organization external (
      7    type oracle_loader
      8    default directory ext_dir
      9    access parameters (
     10      records delimited by newline
     11      skip 1
     12      fields terminated by '|'
     13      missing field values are null
     14      (
     15        color    char(5),
     16        cat      char(5),
     17        codes    char(50)
     18      )
     19    )
     20    location ('color.txt')
     21  )
     22  parallel 5
     23  reject limit unlimited;
    SQL>
    SQL> select * From color;
    
    COLOR CAT   CODES
    ----- ----- --------------------------------------------------
    Red   Pass  tiger, 12@fol, letmein
    Blue  Pass  jkd@332, forpw, wonton
    Gray  Pass  rochester, tommy, 23$ai,
    SQL>
    

    【讨论】:

    • 嘿,谢谢小脚。不幸的是,它仍然没有得到所有东西......所以我实际上不得不检查数千条记录才发现最后一个字段的末尾有一个逗号,例如:rochester,tommy,23$ai,
    • 我说得太早了,添加“空白”确实得到了一切,但后来我回到了只读取第一个逗号值的方格
    • 恐怕我听不懂你在说什么。我将第 3 个示例添加到我的 .TXT 文件中,并从未更改的外部表中进行选择,并获得了 everything。请参阅我刚才发布的编辑输出。这不是你想要的吗?
    • 是的,这正是我想要的,但我有 50k 多条记录,而我丢失的记录不到 100 条。不知道怎么回事,等我回家再去看看。我会及时通知你!
    • 好的,所以我检查了一些代码超过了指定的大小,doh!修复了大小,现在可以使用了,谢谢!
    猜你喜欢
    • 2018-09-20
    • 1970-01-01
    • 2010-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-06
    • 2016-12-14
    • 2016-09-07
    相关资源
    最近更新 更多