sql—如何在oracle外部表中包含逗号

r3i60tvu  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(352)

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

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 以及 ORA-30653 每次从外部表(包含数千条记录)中选择“全部”时都会出现拒绝错误。
我有拒绝的限制 10 ,但我不想把它改成 UNLIMITED 因为我不想忽略这些错误,也不能更改文件。
我的代码:

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

50few1ms1#

方法如下:

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>

相关问题