Как объединить много баз данных 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 вы, вероятно, должны хранить несколько таблиц в одном файле базы данных.
однако, если я ошибаюсь, Я думаю, вы могли бы прикрепить базы данных, а затем использовать представление для упрощения ваших запросов. Или сделайте таблицу в памяти и скопируйте все данные (но это еще хуже с точки зрения производительности, особенно если у вас большой базы данных)