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

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

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

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

我用空格结束最后一列,结果一切正常,没有错误,只是它只包含/读取最后一列的第一个值和第一个逗号,例如tiger,jkd@332显然是因为逗号后面有空格。
如何在不出现任何错误的情况下包含逗号?我试过了 " " , /r , /n , /r/n 甚至不包括 "terminated by" 在最后一个专栏中,虽然这些将包括逗号,但我将得到 ORA-29913 以及 ORA-30653 每次从外部表(包含数千条记录)中选择“全部”时都会出现拒绝错误。
我有拒绝的限制 10 ,但我不想把它改成 UNLIMITED 因为我不想忽略这些错误,也不能更改文件。
我的代码:

  1. --etc..
  2. FIELDS TERMINATED BY '|'
  3. OPTIONALLY ENCLOSED BY '"'
  4. MISSING FIELD VALUES ARE NULL
  5. --etc..
  6. CODES CHAR TERMINATED BY WHITESPACE
50few1ms

50few1ms1#

方法如下:

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

相关问题