2016-05-13 2 views
0

Первый раз с помощью SQLLDR, просто пытается загрузить файл с одного столбца, и не может найти правильный способ сделать это :( Что я помещал в качестве разделителя?SQLLDR с одной колонки

Вот мой .ctl файл:

load data 
infile 'myfile.dat' 
into table mytable 
fields terminated by '' 
(mycolumn) 

Я постоянно получаю ошибки в .log как:

Record 4: Rejected - Error on table ..., column .... 
ORA-12899: value too large for column "... (actual: 80, maximum: 24) 

Даже если значения в файле, не более 8 символов каждый или чего-л: string1 string2 string3

Любая помощь будет очень признательна.

Большое спасибо, G

ответ

0

Вам не нужно fields terminated by линии в этом случае, но вы должны иметь TRUNCATE или APPEND в зависимости от того, если вы хотите сохранить существующие данные или нет.

load data 
infile 'myfile.dat' 
truncate 
into table mytable 
(mycolumn) 
+0

Благодаря Гэри, однако вместе с решением я получаю только 1 символ вставляется для каждого значения .. Источник столбец VARCHAR2 (24). Файл наматывается как: 'SET эха от обратной связи Зачет SET срок от SET размер_страницы 0 SET NewPage 0 SET пространство 0 золотника myfile.dat выберите отчетливый (MyColumn) от туЬаОго; SPOOL OFF ' ' Затем, перед загрузкой буферизованного файла, целевая таблица создается как: 'create table mytable (mycolumn VARCHAR2 (24));' но я все еще получаю 1 символ, вставленный из файла. – GeorgeK

+0

на самом деле проблема была в буферизованном файле строка перевода была далеко справа от каждой строки. Он работал при добавлении 'set trimspool on' в spooling sql – GeorgeK

+0

Вы также можете изменить файл управления на:' mycolumn char 'trim (: mycolumn) "' –

0

Почему бы не просто изменить размер вашей колонки 80 Alter таблице изменить varchar2 (80)

Смежные вопросы