如何在 Oracle 外部 table 中包含逗号

How to include commas in Oracle external table

我有一个竖线分隔的文件,在最后一个字段中包含逗号,如下所示:

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

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

如何在不出现任何错误的情况下包含逗号?我尝试了 " "/r/n/r/n,甚至在最后一列中排除了 "terminated by",虽然这些可以包含逗号,每次我 select 全部来自外部 table(包含数千条记录)时,我都会收到 ORA-29913ORA-30653 拒绝错误。

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

我的代码:

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

方法如下:

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>