2013-10-06 2 views
0

Я пытаюсь импортировать данные из файла .dat в таблицу в базе данных Oracle, используя SQL загрузчик.Ошибка с помощью SQL загрузчика

управления файлами:

LOAD DATA 
infile 'E:\labs\labs\lab_18_06.dat' 
INTO TABLE INVENTORY.PRODUCT_ON_HAND 
APPEND 
FIELDS TERMINATED BY ',' 
(on_hand_id, 
product_id, 
quantity, 
warehouse_city char(30), 
last_update date(12) 'DD-MON-YYYY') 

файл данных содержит записи, как этот:

5001,1001,7,Atlanta,01-FEB-2004 

таблицы в базе данных:

SQL> desc inventory.product_on_hand; 
Name          Null? Type 
----------------------------------------- -------- ---------------------------- 
ON_HAND_ID        NOT NULL NUMBER(5) 
PRODUCT_ID           NUMBER(7) 
QUANTITY           NUMBER(5) 
WAREHOUSE_CITY          VARCHAR2(30) 
LAST_UPDATE          DATE 

Я получаю следующее сообщение об ошибке в файле .log:

Record 1: Failed - Error in the table INVENTORY.PRODUCT_ON_HAND, column LAST_UPDATE. 
ORA-01843: month not valid 

Пожалуйста, помогите разобраться в моей проблеме!

UPDATE:

SQL> select sysdate from dual; 

SYSDATE 
----------- 
06-OCT-2013 

Я поставил nls_lang='american' и nls_date_format='DD-MON-YYYY', но это не было `помощь/

BAD FILE:

5001,1001,7,Atlanta,01-FEB-2004 
5002,1001,7,Chicago,01-FEB-2004 
5003,1001,7,Orlando,01-FEB-2004 
5004,1002,7,Atlanta,01-FEB-2004 
5005,1002,7,Chicago,01-FEB-2004 
5006,1002,7,Orlando,01-FEB-2004 
5007,1003,7,Atlanta,01-FEB-2004 
5008,1003,7,Chicago,01-FEB-2004 
5009,1003,7,Orlando,01-FEB-2004 
5010,1004,7,Atlanta,01-FEB-2004 
5011,1004,7,Chicago,01-FEB-2004 
5012,1004,7,Orlando,01-FEB-2004 
5013,1005,7,Atlanta,01-FEB-2004 
5014,1005,7,Chicago,01-FEB-2004 
5015,1005,7,Orlando,01-FEB-2004 
5016,1006,7,Atlanta,01-FEB-2004 
5017,1006,7,Chicago,01-FEB-2004 
5018,1006,7,Orlando,01-FEB-2004 
5019,1007,7,Chicago,01-FEB-2004 
5020,1007,7,Orlando,01-FEB-2004 
5021,1007,7,Atlanta,01-FEB-2004 
5022,1008,7,Chicago,01-FEB-2004 
5023,1008,7,Orlando,01-FEB-2004 
5024,1008,7,Atlanta,01-FEB-2004 
5025,1009,7,Chicago,01-FEB-2004 
5026,1009,7,Orlando,01-FEB-2004 
5027,1009,7,Atlanta,01-FEB-2004 
5028,1010,7,Chicago,01-FEB-2004 
5029,1010,7,Orlando,01-FEB-2004 
5030,1010,7,Atlanta,01-FEB-2004 
5031,1010,7,Chicago,01-FEB-2004 
5032,1011,7,Orlando,01-FEB-2004 
5033,1011,7,Atlanta,01-FEB-2004 
5034,1012,7,Chicago,01-FEB-2004 
5035,1012,7,Orlando,01-FEB-2004 
5036,1012,7,Atlanta,01-FEB-2004 
5037,1013,7,Chicago,01-FEB-2004 
5038,1013,7,Orlando,01-FEB-2004 
5039,1014,7,Atlanta,01-FEB-2004 
5040,1014,7,Chicago,01-FEB-2004 
5041,1015,7,Atlanta,01-FEB-2004 
5042,1015,7,Chicago,01-FEB-2004 
5043,1015,7,Orlando,01-FEB-2004 
5044,1016,7,Atlanta,01-FEB-2004 
5045,1016,7,Chicago,01-FEB-2004 
5046,1016,7,Orlando,01-FEB-2004 
5047,1017,7,Atlanta,01-FEB-2004 
5048,1017,7,Chicago,01-FEB-2004 
5049,1017,7,Orlando,01-FEB-2004 
5050,1018,7,Atlanta,01-FEB-2004 
5051,1018,7,Chicago,01-FEB-2004 
+0

Какова ваша установка для NLS_LANG? 'FEB' не является допустимым именем месяца на всех языках. –

+0

@a_horse_with_no_name Я установил американец. –

+0

@a_horse_with_no_name да это –

ответ

0

попробовать

alter session set nls_date_language='american'; 

LOAD DATA 
infile 'E:\labs\labs\lab_18_06.dat' 
INTO TABLE INVENTORY.PRODUCT_ON_HAND 
APPEND 
FIELDS TERMINATED BY ',' 
(on_hand_id, 
product_id, 
quantity, 
warehouse_city char(30), 
last_update date(12) 'DD-MON-YYYY') 
+0

результат: вместо ожидаемого числа не численный символ был найден. Из-за MM - 2 цифры, представляющие число месяцев. Таким образом, решение не выполнено. –

+0

alter session set nls_date_language = 'american'; – sunysen

+0

с использованием SQL plus I измененного сеанса, но такая же ошибка сохраняется. Может быть, формат DATA и «DD-MON-YYYY» отличаются и требуют преобразования? –

0

Проблема в том, что вы указали 12 цифр в дате: last_update date(12) 'DD-MON-YYYY' в вашем файле управления, это неверно.

Вы должны иметь как last_update date 'DD-MON-YYYY'

SO управления файлами SHLD быть:

LOAD DATA 
infile 'E:\labs\labs\lab_18_06.dat' 
INTO TABLE INVENTORY.PRODUCT_ON_HAND 
APPEND 
FIELDS TERMINATED BY ',' 
(on_hand_id, 
product_id, 
quantity, 
warehouse_city char(30), 
last_update date 'DD-MON-YYYY') 
+0

нет, это не проблема, так как после внесенных изменений, которые вы посоветовали, все равно появляется та же ошибка. –

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