Я пытаюсь импортировать некоторые данные с помощью sql * loader, но я не могу импортировать широту/долготу. В таблице эти столбцы FLOAT (126), а в файле данных - только текст. Я попытался с FLOAT EXTERNAL в файле управления sqlldr, но он не работает. Я получил ORA-01722: неверный номер.Oracle SQL sqlldr не импортирует широту/долготу как float
Describe my_table;
Name Null Type
------------------------- -------- ------------
PRE_ID NOT NULL NUMBER(38)
PRE_DH NOT NULL TIMESTAMP(6)
PRE_PRO NOT NULL NUMBER(38)
PRE_INF NOT NULL NUMBER(38)
PRE_TPL NOT NULL NUMBER(38)
PRE_LAT NOT NULL FLOAT(126)
PRE_LNG NOT NULL FLOAT(126)
файл данных:
55831;08/12/2016 16:48:07;1;-128;2;-22.4741249084473;-50.55194854736336
55831;09/12/2016 08:02:06;1;-128;2;-22.5002975463867;-50.8194427490234
55831;09/12/2016 19:12:06;1;-128;2;-22.5002975463867;-50.8194427490234
и SQLLDR файл управления:
load data
infile 'my_file.csv' "str '\r\n'"
append
into table my_table
fields terminated by ';'
trailing nullcols
(PRE_ID CHAR(4000),
PRE_DH TIMESTAMP "DD/MM/YYYY HH24:MI:SS",
PRE_PRO CHAR(4000),
PRE_INF CHAR(4000),
PRE_TPL CHAR(4000),
PRE_LAT FLOAT EXTERNAL,
PRE_LNG FLOAT EXTERNAL,
)
файл журнала:
Table MY_TABLE, loaded from every logical record.
Insert option in effect for this table: APPEND
TRAILING NULLCOLS option in effect
Column Name Position Len Term Encl Datatype
------------------------------ ---------- ----- ---- ---- ---------------------
PRE_ID FIRST 4000 ; CHARACTER
PRE_DH NEXT * ; DATETIME DD/MM/YYYY HH24:MI:SS
PRE_PRO NEXT 4000 ; CHARACTER
PRE_INF NEXT 4000 ; CHARACTER
PRE_TPL NEXT 4000 ; CHARACTER
PRE_LAT NEXT * ; CHARACTER
PRE_LNG NEXT * ; CHARACTER
value used for ROWS parameter changed from 64 to 1
Record 1: Rejected - Error on table MY_TABLE, column PRE_LAT.
ORA-01722: invalid number
Record 2: Rejected - Error on table MY_TABLE, column PRE_LAT.
ORA-01722: invalid number
Record 3: Rejected - Error on table MY_TABLE, column PRE_LAT.
ORA-01722: invalid number
Возможно, немой вопрос (мой вопрос, следующий): почему вы не можете просто объявить PRE_LAT и PRE_LNG как «NUMBER», стандартный тип данных Oracle? Разумеется, вы не можете беспокоиться о количестве десятичных знаков в широте или долготе. – mathguy
Вы имеете в виду изменить тип данных на столе? Не могу этого сделать. Это не моя таблица, а не моя база данных. : -/ – Rodrick
Да, это было то, что я имел в виду. Очень жаль. Помимо этого я не могу помочь, я сам не использовал sqlldr. Удачи! – mathguy