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

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

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

Ответы

Ответ 1

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

Ответ 2

Подводя итог сообщение Nabble в ответе DavidM:

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

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

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

Ответ 3

Вы также можете использовать программное обеспечение diff/merge для выполнения задания. Вы можете попробовать SQLite Compare, он поддерживает сравнение и объединение больших таблиц SQLite между прочим.

Удача

Лирон

Ответ 4

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

Ответ 5

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

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