Я работаю над настольным приложением (тип приложения «Extract Transform Load»), которое требует загрузки больших файлов CSV (около 6 ГБ) в базу данных с использованием Java в качестве интерфейса и Oracle в качестве сервера, но я открыт для других баз данных и инструментов. также (например, SQLite, H2, HSQLDB, MySQL).
Я попытался использовать библиотеки Java OpenSource для анализа и загрузки файлов CSV, таких как:
Проблема этих библиотек в эффективности. Они требуют слишком много времени для загрузки. Например, для загрузки 4 Гб CSV-файла потребуется 6 часов.
Имея такой опыт, я решил попробовать утилиты баз данных для загрузки файлов CSV. Одним из них является Oracle SQL*Loader. Это быстрее и дает желаемый результат. Он может удалять пробелы, загружать файлы CSV в различные таблицы, использовать функции оракула, такие как декодирование и т. д.
Однако у меня есть следующие проблемы:
Я не смог найти способ получить ошибки/журналы SQL*Loader в Java и отобразить их пользователю.
Так как SQL*Loader является проприетарным, нет возможности встроить его в установку моего приложения. Например, перед установкой моего приложения пользователю необходимо загрузить и установить Oracle Client отдельно. Другое дело, что мне нужно проверить, установлен ли клиент Oracle до начала процесса установки.
Я искал другие возможные решения и нашел безголовые базы данных, такие как SQLite и H2.
В SQLite я использую команду .import для загрузки файлов CSV. Но я никак не мог назвать это на Java.
Я обращаюсь к базе данных H2, но мне трудно загрузить ее, поскольку она не поддерживает экранирование строки заголовка.
Пожалуйста, дайте мне знать ваши предложения.
Спасибо.