SQLDeveloper не умеет обрабатывать пустые даты? - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть экспорт таблицы БД (файл .csv, созданный с использованием SQLDeveloper), который мне нужно импортировать в другую таблицу БД.Проблема в том, что существуют столбцы даты, которые можно обнулять, и эти значения, очевидно, экспортируются в виде пустой строки.Когда я пытаюсь импортировать этот файл, SQLDeveloper внутренне, кажется, генерирует оператор вставки для каждой строки, так как я получаю следующее сообщение об ошибке:

INSERT INTO <tablename> (<fieldnames here>) VALUES (... ,to_date('', 'DD.MM.RRRR HH24:MI:SS'), ...);
Error report -
ORA-01830: date format picture ends before converting entire input string

В этой вставке SQLDeveloper явно пытается преобразовать пустую строку в датуиспользование to_date (...), которое, очевидно, приводит к ошибке.

Есть ли обходной путь, поэтому позволяет импортировать такие даты, как 'null', в БД?В конце концов: как-то должно быть возможно снова импортировать файлы .csv, которые были сгенерированы SQLDeveloper, не так ли?

1 Ответ

0 голосов
/ 26 сентября 2019

Это работает для меня.

Поскольку вы не предоставили определение таблицы или пример данных, я составил свой собственный сценарий.Сравните то, что я сделал, с тем, что вы делаете.

create table csv_null_dates (id integer, dates date);
insert into csv_null_dates values (1, sysdate);
insert into csv_null_dates values (2, sysdate-1);
insert into csv_null_dates values (3, sysdate+1);
insert into csv_null_dates values (4, null);
insert into csv_null_dates values (5, sysdate);

set sqlformat csv
cd c:\users\jdsmith\desktop
spool null_dates.csv
select * from csv_null_dates;
spool off

Вывод:

Table CSV_NULL_DATES created.


1 row inserted.


1 row inserted.


1 row inserted.


1 row inserted.


1 row inserted.

"ID","DATES"
1,26-SEP-19
2,25-SEP-19
3,27-SEP-19
4,
5,26-SEP-19

Затем я открыл мастер импорта таблиц и указал на мой CSV-файл:

enter image description here

Я закончил работу мастера, импорт завершился, вот мой журнал:

** Import Start ** at 2019.09.26-08.12.59
Import C:\Users\jdsmith\Desktop\null_dates.csv to HR.HR.CSV_NULL_DATES 
Load Method: Insert
** Import End ** at 2019.09.26-08.13.00 

И когда я просматриваю свою таблицу,Я вижу, что у меня в 2 раза больше записей, чем у меня, включая строку с нулевой датой:

enter image description here

...