通过SQL loader加载的数据中的双引号

时间:2011-11-16 10:33:23

标签: sql-loader

我遇到了通过SQL Loader加载到Oracle表的数据的问题。

问题在于双引号被包含在插入的值中。

示例:

"917681904           "
"914481475            "
"935848150            "

问题在于CHAR字段,尤其是CO_COMERCIAL_SERV。

它应该插入没有双引号。我不清楚这些双引号的添加位置。 :(

我之前使用过的控制文件是:

OPTIONS (SKIP = 1)
LOAD DATA CHARACTERSET WE8ISO8859P1

APPEND
PRESERVE BLANKS
INTO TABLE "TAB_SAVITHA"
FIELDS TERMINATED BY '|'
TRAILING NULLCOLS

(
"NU_SECUE_PSCO",
"CO_CLIENT_COM",
"CO_PRSE",
"CO_COMERCIAL_SERV",
"CO_PROVINCIA_INST",
"NU_DURA_ANOS",
"IN_LINEA"
)

稍后,我在列名称周围取消了双引号,并按如下方式给出。但仍然是同样的问题。

OPTIONS (SKIP = 1)
LOAD DATA CHARACTERSET WE8ISO8859P1

APPEND
PRESERVE BLANKS
INTO TABLE "TAB_SAVITHA"
FIELDS TERMINATED BY '|'
TRAILING NULLCOLS

(
NU_SECUE_PSCO,
CO_CLIENT_COM,
CO_PRSE,
CO_COMERCIAL_SERV,
CO_PROVINCIA_INST,
NU_DURA_ANOS,
IN_LINEA
)

用于加载数据的shell脚本如下所示:

cat<<EOD >PBPS.sql 
set linesize 800
set pagesize 3000
set heading off
set feed off

select NU_SECUE_PSCO||'|'||CO_CLIENT_COM||'|'||CO_PRSE||'|'||CO_COMERCIAL_SERV||'|'||CO_PROVINCIA_INST||'|'||NU_DURA_ANOS||'|'||IN_LINEA||'|' FROM PBPS_BKP WHERE HITO =$vpin;

exit
EOD


sqlplus -s $1/$2@$3 @PBPS.sql > PBPS.dat

sqlldr $1/$2@$3 control='./sqlloader/Main.ctl'
rm -f PBPS.sql

我不太需要帮助。

非常感谢任何帮助。

谢谢, Savitha

3 个答案:

答案 0 :(得分:2)

试一下,看看它是否有效。

FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED BY '"'

答案 1 :(得分:0)

我遇到了同样的问题。 经过调查,我发现这个问题实际上是由于字符串中的特殊字符造成的。 首先替换空间然后只剩下那个特殊字符。 我不确定该字符是如何进入字符串但你可以从sqldeveloper等复制该字符,并在替换函数中使用该字符从表列中删除它。

答案 2 :(得分:0)

我有同样的问题。这是因为我的输入文件将文件从Windows转换为Linux。

执行以下命令解决了问题:

dos2unix /myInputFile.dat