импорт данных CSV в Oracle (пробует Apex / SQL Developer) - PullRequest
8 голосов
/ 30 марта 2012

Сначала я спросил об этом в Superuser, но кто-то посоветовал мне сделать репост здесь.

Я использую последние версии APEX (4.1.1) и Oracle (11.2.0.3).

Я загружаю данные CSV в набор таблиц. Я пробовал это сделать и столкнулся с некоторыми проблемами, которых раньше не видел.

В качестве примера я попытался импортировать данные в эту таблицу:

CREATE TABLE SW_ENGINEER 
   (ENGINEER_NO VARCHAR2(10), 
          ENGINEER_NAME VARCHAR2(50), 
           CONSTRAINT SW_ENG_PK PRIMARY KEY (ENGINEER_NO))

Ошибка в этом упрощенном подмножестве данных:

call log no,contract_no,call date,agreed date,agreed time,actual arrive,engineer no,engineer name,equipment code,cust desc,eng desc
a,b,c,22-Mar-06,1,23/03/2006 15:00,654,Flynn Hobbs,d,e,f
a,b,c,22-Mar-06,2,23/03/2006 15:00,654,Flynn Hobbs,d,e,f
a,b,c,19-Mar-06,3,19/03/2006 09:15,351,Rory Juarez,d,e,f

(он не работает на большом наборе данных) Я не могу загрузить его с помощью APEX или SQL Developer, как указано ниже:

  • APEX: С помощью APEX Data Workshop импортируйте текст, загрузите существующую таблицу, используйте разделенные запятыми, выберите таблицу и файл, отметьте флажок «строка заголовка», и у нас будет форма отображения столбца, показывающая правильные данные. Затем установите все столбцы, кроме engineer_no и engineer_name, как «Нет» и нажмите «Загрузить данные».

Это похоже на работу и отображает итоговую строку в репозитории загрузки текстовых данных, но при проверке она загрузила 0 строк и 79 завершилась неудачно. Нажатие на 79 показывает, что все они пострадали от «ORA-01008: не все переменные связаны». Выделенные столбцы выглядят нормально для меня, поэтому мне интересно, включает ли он еще некоторые, несмотря на настройки «Нет»?

Проблема не возникает, если я отредактирую csv для удаления ненужных столбцов перед загрузкой, но было бы намного проще, если бы я мог использовать сопоставление столбцов.

  • Разработчик SQL: используя мастер импорта данных в SD, я обнаружил, что он не перейдет к отображению столбцов, если не проверена строка заголовка (кнопка включена, но не работает - почему нет?), - но если она проверяется (правильно в этом случае), тогда шаг проверки завершается неудачно, потому что «Столбец таблицы Engineer_no недостаточно велик ...».

Я обнаружил, что это можно преодолеть, удалив значения заголовков из столбцов файла csv. Таким образом, похоже, что установка флажка «Строка заголовка» фактически не приводит к тому, что он вообще игнорирует строку заголовка, и именно значение заголовка «Engineer-no» вызывает ошибку. Что мне не кажется правильным. Я использовал оба подхода без проблем в прошлом, и мне интересно, как недавнее обновление как-то связано с этим.

Есть идеи? Или я что-то упускаю очевидное?

Ответы [ 3 ]

2 голосов
/ 30 марта 2012

Мой коллега находит это (не вполне удовлетворительное) решение:

если столбцы, которые вам нужны, находятся в начале, это работает так:

engineer no,engineer name,equipment code,cust desc,eng desc,call log no,contract_no,call date,agreed date,agreed time,actual arrive
654,Flynn Hobbs,d,e,f,a,b,c,22-Mar-06,1,23/03/2006 15:00
654,Flynn Hobbs,d,e,f,a,b,c,22-Mar-06,2,23/03/2006 15:00
351,Rory Juarez,d,e,f,a,b,c,19-Mar-06,3,19/03/2006 09:15

Так что это похоже на ошибку с функцией включения ДА / НЕТ в импорте текста APEX?

0 голосов
/ 14 июня 2017

Я не совсем уверен, почему это не сработало для вас.Для меня это работало нормально, используя Apex Data Workshop с копированием и вставкой.(Версия 5.0.4)

Конечно, мне удалось загрузить только два из этих трех результатов, один из которых имел дублирующее значение идентификатора.Но это сработало.

PS: Для большего набора данных, где у вас может быть ',' как часть значения столбца для строки, рассмотрите возможность использования опции «Необязательно заключен в», задав для них двойнуюкавычки (") во время загрузки мастера. Он обрабатывает все значение как одно значение.

0 голосов
/ 26 апреля 2016

В CSV

call log no,contract_no,call date,agreed date,agreed time,actual arrive,engineer no,engineer name,equipment code,cust desc,eng desc
a,b,c,22-Mar-06,1,23/03/2006 15:00,654,Flynn Hobbs,d,e,f
a,b,c,22-Mar-06,2,23/03/2006 15:00,654,Flynn Hobbs,d,e,f
a,b,c,19-Mar-06,3,19/03/2006 09:15,351,Rory Juarez,d,e,f

У вас есть 11 столбцов, и вы пытаетесь импортировать их в 3 столбца.

  1. Если у вас есть "в CSV, вы должны удалить их все.
  2. Для этого CSV в таблице должно быть ровно 11 столбцов.
  3. Каждый столбец в таблице может иметь правильный тип данных.
  4. Каждый в CSV является разделителем столбцов.
...