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