Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Oracle > sqlldr: как загружать данные с датами?


Автор: Andrey1 22.4.2008, 13:03
Столкнулся с тем, что не загружаются данные из CSV файла, с датами в формате:
Код

07-04-2008 14:38:09


Пишет: 
"Запись 1: Забракована - Ошибка в таблице data, столбце SCHEDULED_OFF.
ORA-01830: date format picture ends before converting entire input string"...


Командный скрипт для загрузки:

Код

OPTIONS(direct=false)
LOAD DATA
INFILE 'data.csv'
INTO TABLE data
APPEND
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS 
(
...
SETTLED_DATE,
...
SCHEDULED_OFF,
...
)



Нужно что-то изменить в командном скрипте?

Автор: Sqlninja 22.4.2008, 13:07
допиши маску формата, например:
Код

(
...
SETTLED_DATE "dd.mm.yyyy",
...
SCHEDULED_OFF "dd.mm.yyyy",
...
)



Автор: DimW 22.4.2008, 13:09
Код

OPTIONS(direct=false)
LOAD DATA
INFILE 'data.csv'
INTO TABLE data
APPEND
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS 
(
...
SETTLED_DATE "TO_DATE(:SETTLED_DATE, 'DD-MM-YYYY HH24:MI:SS')",
...
)

Автор: Andrey1 22.4.2008, 14:09
Спасибо, то что нужно smile !

Тока теперь - не хочет принимать вещественные данные типа '2.7' :( :

"Запись 1: Забракована - Ошибка в таблице data, столбце field1.
ORA-01722: invalid number".

Такое впечатление, что он хочет, чтобы вещественные числа были заданы с "," вместо ".".

Столбец определен как FLOAT.

Пробовал задать в командном скрипте:
Код

...
(
...,
field1 FLOAT
)

но это не помогло...

Автор: DimW 22.4.2008, 14:14
а так?:
Код

...
(
field1 "to_number(:field1)"
)

Автор: Andrey1 22.4.2008, 14:43
Добавил формат:

Код

(
...
field1 "TO_NUMBER(:field1,'9999.99')",
...
)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)