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


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

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

4 55

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 вы, вероятно, должны хранить несколько таблиц в одном файле базы данных.

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