Массовый импорт данных Netbeans JavaDB из файла CSV

Я действительно разочарован JavaDB и Netbeans! ЛЮБАЯ помощь теперь будет оценена по достоинству. Я использую Netbeans 7.2.1 с последним Java SDK.

ЦЕЛЬ:
Импортировать данные в формате CSV из файла, расположенного в C:\, в таблицу JavaDB с именем APP.USERS.

ЧТО Я СДЕЛАЛ:
Я использовал следующие коды, чтобы попытаться импортировать данные в таблицу с помощью утилиты SQL Query в Netbeans:

  1. Функция вызова:

CALL SYSCS_UTIL.SYSCS_IMPORT_TABLE (null, 'USERS', 'FIRSTNAME,LASTNAME,USERNAME,PASSWORD,UNIQUENR,MEMBERSINCE,DOB,EMAIL,AWARDPOINTS,USERTYPE', 'c:\SQL_APP_USERS', '\n',',','UTF-8', 0); ` ВЫБЕРИТЕ * ИЗ APP.USERS;`

  1. «Другая» функция:

INSERT INTO APP.USERS(FIRSTNAME,LASTNAME,USERNAME,PASSWORD,UNIQUENR,MEMBERSINCE,DOB,EMAIL,AWARDPOINTS,USERTYPE) VALUES (FROM 'c:\SQL_APP_USERS.txt' WITH ( FIELDTERMINATOR = ',', ROWTERMINATOR = '\n' )); --Check the content of the table. SELECT * FROM APP.USERS;

ПРОБЛЕМЫ:

  • Чтение документов Oracle KB мне совсем не помогает!!! (http://docs.oracle.com/javadb/10.4.1.3/tools/ctoolsimport16245.html)
  • Выполнение первой упомянутой функции показывает результат: Error code -1, SQL state 42Y03: 'SYSCS_UTIL.SYSCS_IMPORT_DATA' is not recognized as a function or procedure.
  • Выполнение второй упомянутой функции показывает результаты: Error code -1, SQL state 42X01: Syntax error: Encountered "FROM" at line 2, column 9

ПОЖАЛУЙСТА ПОМОГИ.


person Johan Brink    schedule 18.08.2013    source источник


Ответы (1)


1.) Указанная функция, которую вы нам даете

CALL SYSCS_UTIL.SYSCS_IMPORT_TABLE (...

не соответствует сообщению об ошибке

SYSCS_UTIL.SYSCS_IMPORT_DATA не распознается как функция или процедура.

2.) Количество передаваемых значений не соответствует требуемому.
Нет перегруженной функции с 8 параметрами.

CALL SYSCS_UTIL.SYSCS_IMPORT_TABLE 
   (null,'STAFF','c:\output\myfile.del',';','%',null,0);
     1      2             3              4   5   6   7

CALL SYSCS_UTIL.SYSCS_IMPORT_TABLE 
   (null, 'USERS','FIRSTNAME,...,', 'c:\SQL_APP_USERS', '\n',',','UTF-8', 0);
     1      2             3                  4            5   6     7     8

Кроме того, последовательность неверна.
Это означало бы, что каждый столбец представляет собой отдельную строку.

'\n',','

должно быть

',','\n'

3.) Было бы неплохо, если бы это было так просто.

INSERT INTO ... VALUES (FROM 'c:\SQL_APP_USERS.txt'

Итак, вот простой класс утилиты Java, который можно использовать для загрузки CSV-файла в базу данных.

Пример импорта CSV в базу данных

Протестировано:

  • создать пустой файл c:\myfile.del

CALL SYSCS_UTIL.SYSCS_IMPORT_TABLE 
     (null,'CUSTOMER','c:\myfile.del',';','%',null,0);

введите здесь описание изображения

Здесь таблица FRIENDS создана для теста.

введите здесь описание изображения

Поскольку файл 'c:\myfile.del' пуст, делать нечего.
НЕТ ошибки: is not recognized as a function or procedure

введите здесь описание изображения

person moskito-x    schedule 18.08.2013
comment
Спасибо за решение!! Теперь я получаю сообщение об ошибке: Error code -1, SQL state XIE0R: Import error on line 1 of file c:\SQL_APP_USERS.csv: Read endOfFile at unexpected place on line 1. Error code 99999, SQL state XIE0E: Read endOfFile at unexpected place on line 1. ‹br› Мой CSV-файл выглядит как 1,John,Doe,[email protected],helloworld\n2,Jane,Doe,[email protected],helloworld2, где \n относится к новой строке в CSV. Моя последовательность ,,\n. Как это исправить? - person Johan Brink; 18.08.2013
comment
@JohanBrink Во-первых: мой пример работает ?? Во-вторых: не используйте \n его сложно поддерживать. Функция не видит разницы между концом строки и новой строкой! Поэтому используйте % или любой другой разделитель строк. - person moskito-x; 18.08.2013
comment
Ничего себе, заработало. БЛАГОДАРЮ ВАС!!! Вы только что помогли целому ИТ-классу решить проблему с JavaDB. - person Johan Brink; 18.08.2013
comment
@moskito-x Не могли бы вы взглянуть на мои проблемы с DB/Eclipse-Hibernate, пожалуйста? stackoverflow.com/questions/35834001/ и stackoverflow.com/questions/36024747 /how-to-create-a-derby-user - person The Bitman; 16.03.2016