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