Как объединить много баз данных SQLite?

Если у меня есть большое количество баз данных SQLite, все с одной схемой, каков наилучший способ объединить их вместе, чтобы выполнить запрос по всем базам данных?

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

4 ответов


резюмировать из Nabble post в ответ DavidM это:

attach 'c:\test\b.db3' as toMerge;           
BEGIN; 
insert into AuditRecords select * from toMerge.AuditRecords; 
COMMIT; 
detach toMerge;

повторять по мере необходимости.

Примечание: добавил detach toMerge; согласно комментарию Майка.


Это будет сделано по требованию, можно несколько раз в день. То, как я вижу, что это работает, как в http://sqlite.1065341.n5.nabble.com/Attempting-to-merge-large-databases-td39548.html Когда базы данных объединяются в большую БД, выполняется запрос, а затем большая база данных удаляется.


Если вам нужно выполнить эту операцию слияния только один раз (чтобы создать новую большую базу данных), вы можете создать скрипт/программу, которая будет циклически обрабатывать все ваши базы данных sqlite, а затем вставлять данные в основную (большую) базу данных.


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

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