SQL * Loader中的多个包含符号

时间:2015-03-17 16:42:54

标签: oracle sql-loader

我正在将CSV文件加载到Oracle表中。某些记录中的一个字段括在"abc@xyz.com"中,其他记录中的相同字段括在"'abc@xyz.com'"中。我只需加载abc@xyz.com

我使用OPTIONALLY ENCLOSED BY '"',但在第二种情况下没有帮助。有没有办法在OPTIONALLY ENCLOSED BY子句中指定两个符号?或者实现这一目标的其他方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以apply an SQL operator修剪前导和尾随单引号。例如,使用包含以下内容的数据文件

"abc@xyz.com"
"'abc@xyz.com'"
'abc@xyz.com'

虚拟表的控制文件:

LOAD DATA
TRUNCATE INTO TABLE t42
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
  EMAIL CHAR(30) "TRIM(BOTH '''' FROM :EMAIL)"
)

这会加载剥离的值:

select * from t42;

EMAIL                        
------------------------------
abc@xyz.com                   
abc@xyz.com                   
abc@xyz.com                   

正如您所看到的,这将加载用单引号,双引号或两者括起来的值 - 只要单数在双精度范围内而不是相反。