Как исправить ошибку ORA-01843 при импорте данных из xls-файла?

Имеется xls-файл большого объёма, который необходимо импортировать в БД. Работаю в PL/SQL Developer 12. Предварительно создал в БД пустую таблицу, для чего использовал два варианта запроса:

Сначала такой:

CREATE TABLE vz_117390_in_garant ( 
  COLUMN1 VARCHAR2(38),     /*--1 № дог.*/
  ... ... ...
  COLUMN5 DATE,             /*--5 Дата заключения договора*/
  ... ... ...
  COLUMN12 TIMESTAMP,       /*-12 Дата установки*/
  ... ... ...
  COLUMN28 NUMBER(38, 4),   /*-28 Мощность максимальная*/
  ... ... ...
  COLUMN38 VARCHAR2(128))   /*-38 Примечание*/
;

Когда не получилось, то такой:

CREATE TABLE vz_117390_in_garant ( 
  COLUMN1 VARCHAR2(38),   /*--1 № дог.*/
  ... ... ...
  COLUMN5 VARCHAR2(10),   /*--5 Дата заключения договора*/
  ... ... ...
  COLUMN12 VARCHAR2(19),  /*-12 Дата установки*/
  ... ... ...
  COLUMN28 VARCHAR2(38),  /*-28 Мощность максимальная*/
  ... ... ...
  COLUMN38 VARCHAR2(128)) /*-38 Примечание*/
;

Импорт пытался делать двумя способами:

  1. Путём непосредственного копирования из excel-файла прямо в таблицу в режиме редактирования (с учётом того, что для правильного копирования из xls-таблицы в неё надо обязательно добавить левую колонку с порядковыми номерами строк);
  2. С помощью инструмента в PL/SQL Developer - ODBC Importer.

В итоге при любом способе получаю сообщение такого типа: Снимок экрана PL/SQL Developer с ошибкой ORA-01843 при импорте инструментом ODBC Importer

Пытался бороться такими способами:

  1. Устанавливал параметр NLS_DATE_FORMAT:

    ALTER SESSION SET NLS_DATE_FORMAT = 'DD.MM.YYYY';

  2. Заменял в исходном файле формат ячеек с "Общий" на "Текстовый";

  3. Использовал в БД вместо первого варианта запроса (см. выше) второй с целью исключить использование типа данных "DATE".

Однако ничего не изменилось. Прошу подсказать ответ на вопрос топика.


Ответы (1 шт):

Автор решения: Noname Noferstname

Положительный результат удалось получить после подсказки в первом комменте топика следующим путём:

  1. Заменить в исходном xls-файле форматы всех ячеек на листе только на "Текстовый";
  2. Выполнить второй запрос (см. формулировку вопроса);
  3. Включить режим редактирования созданной на 2-м шаге таблицы;
  4. Скопировать строки из исходного xls-файла через буфер обмена прямо в таблицу (с учётом того, что для правильного копирования из xls-таблицы в неё надо обязательно добавить левую колонку с порядковыми номерами строк);
  5. Дать команду commit для записи данных в таблицу;
  6. Выйти из режима редактирования таблицы.
→ Ссылка