Двойные кавычки в данных, загружаемых через загрузчик SQL - PullRequest
2 голосов
/ 16 ноября 2011

У меня проблема с загрузкой данных в таблицы Oracle через SQL Loader.

Проблема в том, что к введенному значению добавляются двойные кавычки.

пример:

"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
)

Сценарий оболочки, используемый для загрузки данных, выглядит следующим образом: *

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

Мне очень нужна помощь.

Любая помощь очень ценится.

Спасибо, САВИТА

Ответы [ 3 ]

2 голосов
/ 16 ноября 2011

попробуйте это и посмотрите, работает ли оно.

FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED BY '"'
0 голосов
/ 21 января 2016

У меня была такая же проблема.Это произошло из-за преобразования текста из Windows в Linux в моем входном файле.

Выполнение следующей команды решило проблему:

dos2unix /myInputFile.dat
0 голосов
/ 13 января 2015

У меня такая же проблема.После расследования я обнаружил, что эта проблема на самом деле из-за специального символа в строке.Сначала замените пробел, затем останется только этот специальный символ.Я не уверен, как этот символ входит в строку, но вы можете скопировать этот символ из sqldeveloper и т. Д. И использовать этот символ в функции замены, чтобы удалить его из столбцов таблицы.

...