Обработка CSV-файлов из Интернета с использованием встроенной базы данных Java

Краткая версия: если я не хочу долго хранить данные, как мне программно создать базу данных в HSQLDB и загрузить в нее некоторые данные CSV? Моя схема будет точно соответствовать файлам, а файлы имеют адекватные имена столбцов.

Это неконтролируемый процесс.

Подробности:

Мне нужно применить несколько простых методов SQL к трем CSV-файлам, загруженным через Интернет, а затем создать несколько DTO, которые я затем могу использовать с некоторым существующим кодом, чтобы обработать их еще немного, и сохранить их через REST. Я действительно не хочу возиться с базами данных, но файлы CSV связаны внешними ключами, поэтому я подумал об использовании встроенной базы данных в памяти для выполнения работы, а затем выбросил все это.

Я имел в виду приложение командной строки, работающее следующим образом:

  1. Создайте новую базу данных в HSQLDB.
  2. Запустите три HTTP-запроса GET в трех потоках с помощью Apache HttpClient.
  3. Импортируйте файлы CSV в три таблицы HSQLDB MEMORY.
  4. Запустите какой-нибудь SQL.
  5. Разобрать результаты в мои существующие DTO.
  6. Так далее...

Я мог бы использовать указатели на код и утилиты, полезные для пунктов 1 и 3. Также есть ли альтернатива HSQLDB, которую я должен рассмотреть?


person Simon Gibbs    schedule 20.12.2008    source источник


Ответы (2)


Проверьте opencvs. Это поможет вам анализировать файлы CSV.

person asalamon74    schedule 20.12.2008

Приложение командной строки, которое следует использовать, — это JAR-файл утилиты SqlTool, поставляемый с HSQLDB. Ваша процедура может быть завершена следующим образом:

  1. Создайте новую базу данных HSQLDB в памяти (просто подключитесь к базе данных в памяти).
  2. Запустите три HTTP-запроса GET с помощью Apache HttpClient, чтобы получить CSV-файлы.
  3. Создайте три таблицы HSQLDB TEXT и установите ИСТОЧНИК этих таблиц в CSV.
  4. Запустите какой-нибудь SQL. Проанализируйте результаты в существующих DTO.

Создание таблиц TEXT в чистых таблицах в памяти было невозможно, когда был задан вопрос. Теперь он полностью поддерживается в версиях HSQLDB 2.x.

person fredt    schedule 20.12.2018
comment
Это старый вопрос, и решение теперь закодировано и забыто. Я помню план того, что я сделал, и здесь очень мало описано. Ваш ответ может быть лучшим, если вы расширите пункт 3. Оба ответа могут использовать некоторые детали, связанные с загрузкой правильных помощников и т. Д., Чтобы получить одноразовый сеанс Hibernate (или аналогичный). - person Simon Gibbs; 29.12.2018
comment
Пункт 3 подробно описан в руководстве по HSQLDB. - person fredt; 29.12.2018