Массовая загрузка данных в sqlite?

Есть ли у кого-нибудь советы по утилитам, которые можно использовать для массовой загрузки данных, хранящихся в текстовых файлах с разделителями, в базу данных SQLite?

В идеале что-то, что можно было бы вызвать как отдельную программу из сценария и т. Д.

У группы, с которой я работаю, есть база данных Oracle, которая собирается выгружать кучу данных в файл, а затем загружать эти данные в базу данных SQLite для использования на мобильном устройстве и ищет самый простой способ реализовать такой сценарий.


person Mat Nadrofsky    schedule 30.03.2009    source источник


Ответы (2)


Обратите внимание на команду sqite .import - она ​​делает именно это.
Вы можете установить разделитель с помощью команды .separator

sqlite3 myDatabase
create table myTable (a, b, c);
.separator ','
.import  myFile  myTable
person Martin Beckett    schedule 30.03.2009
comment
Вот это да. это гораздо лучший выбор. Я стыдливо удалю свой ответ ... +1 - person MikeJ; 30.03.2009
comment
хотел прокомментировать, что я подумал, что комментарий стыда был довольно забавным;) - person Brady Moritz; 23.11.2010
comment
одно важное предостережение: это не обрабатывает более сложные CSV: поля не должны быть заключены в двойные кавычки, и вы не можете пытаться экранировать свой разделитель с помощью обратной косой черты, если он вам нужен как допустимое содержимое поля. - person Tom De Leu; 20.11.2013
comment
@TomDeLeu .mode csv позволит импортировать CSV - person M.M; 07.07.2021

Зачем вам текстовый файл?

Просто используйте Java, в которой есть легко доступные библиотеки для Oracle и Доступ к SQLite. Подключитесь к обеим базам данных и просто выберите из одной базы данных и вставьте в другую без дополнительной сложности CSV, который не является очень хорошо определенным форматом и вызовет проблемы с кодировкой символов, кавычками, запятыми / вкладками или точками с запятой, новой строкой и т. Д. В ваши данные.

person Tometzky    schedule 30.03.2009
comment
Вы делаете ставку. Они хотят одного, потому что это путь, о котором они думали. Я собираюсь предложить этот подход (так как он будет более разумным ...) и посмотрю, что из этого выйдет. У них может не быть опытного специалиста по Java, в таком случае я просто выучу и сделаю это. - person Mat Nadrofsky; 30.03.2009
comment
Нет причин, по которым это должна быть Java, любой другой язык, который может использовать как базы данных Oracle, так и SQLite, может выполнять эту работу. Это практически любой основной язык. - person Chad Birch; 30.03.2009
comment
Так как sqlite блокирует запись, это может быть полезно для загрузки из файла. Есть ли опция массовой загрузки напрямую из интерфейса Java (или других основных языков?) Без записи в файл? - person qwerty9967; 14.02.2013
comment
Зачем писать код, если база данных SQLite предлагает эффективный инструмент для импорта? - person m0j0; 19.10.2015
comment
@ qwerty9967 Вам нужно только обернуть ваши вставки в транзакцию, и они будут в тысячи раз быстрее - по сути, массовая операция. - person Jørgen Fogh; 21.07.2016