我正在将CSV文件加载到Oracle表中。某些记录中的一个字段括在"abc@xyz.com"
中,其他记录中的相同字段括在"'abc@xyz.com'"
中。我只需加载abc@xyz.com
。
我使用OPTIONALLY ENCLOSED BY '"'
,但在第二种情况下没有帮助。有没有办法在OPTIONALLY ENCLOSED BY
子句中指定两个符号?或者实现这一目标的其他方法是什么?
答案 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
正如您所看到的,这将加载用单引号,双引号或两者括起来的值 - 只要单数在双精度范围内而不是相反。