我遇到了通过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
答案 0 :(得分:2)
试一下,看看它是否有效。
FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED BY '"'
答案 1 :(得分:0)
我遇到了同样的问题。 经过调查,我发现这个问题实际上是由于字符串中的特殊字符造成的。 首先替换空间然后只剩下那个特殊字符。 我不确定该字符是如何进入字符串但你可以从sqldeveloper等复制该字符,并在替换函数中使用该字符从表列中删除它。
答案 2 :(得分:0)
我有同样的问题。这是因为我的输入文件将文件从Windows转换为Linux。
执行以下命令解决了问题:
dos2unix /myInputFile.dat