Как я могу объединить множество баз данных SQLite?
Вопрос
Если у меня есть большое количество баз данных SQLite, все с одной и той же схемой, как лучше всего объединить их, чтобы выполнить запрос ко всем базам данных?
Я знаю, что можно использовать ПРИКРЕПЛЯТЬ сделать это, но у него есть предел из 32 и 64 баз данных в зависимости от системы памяти на машине.
Решение 2
Это будет делаться по требованию, возможно, несколько раз в день.Я вижу, что это работает так: http://sqlite.1065341.n5.nabble.com/Attempting-to-merge-large-databases-td39548.html где базы данных объединяются в большую БД, выполняется запрос, а затем большая база данных удаляется.
Другие советы
Подводя итоги из Наббл пост в ответе Дэвида М:
attach 'c:\test\b.db3' as toMerge;
BEGIN;
insert into AuditRecords select * from toMerge.AuditRecords;
COMMIT;
detach toMerge;
Повторите по мере необходимости.
Примечание:добавлен detach toMerge;
согласно комментарию Майка.
Если вам нужно выполнить эту операцию слияния только один раз (чтобы создать новую базу данных большего размера), вы можете создать сценарий/программу, которая будет зацикливать все ваши базы данных sqlite, а затем вставлять данные в вашу основную (большую) базу данных.
Несмотря на то, что это очень старая тема, этот вопрос по-прежнему актуален для сегодняшних потребностей программирования.Я публикую это здесь, потому что ни один из предоставленных ответов еще не является кратким, простым и прямым.Это сделано ради сотрудников Google, которые попадают на эту страницу.Графический интерфейс, который мы идем:
- Скачать Sqlitestudio
- Добавьте все файлы базы данных, используя команду
Ctrl + O
Сочетание клавиш - Дважды щелкните каждый загруженный файл базы данных, чтобы открыть/активировать/развернуть их все.
- Веселая часть:просто щелкните правой кнопкой мыши по каждой из таблиц и выберите
Copy
, а затем перейдите к целевой базе данных в списке загруженных файлов базы данных (или создайте новую, если необходимо), щелкните правой кнопкой мыши целевую базу данных и выберитеPaste
Я был поражен, осознав, что такую сложную задачу можно решить, используя древний навык программирования, который называется:скопировать и вставить :)
Без обид, как один разработчик другому, боюсь, что ваша идея покажется ужасно неэффективной.Мне кажется, что вместо объединения баз данных SQLite вам, вероятно, следует хранить несколько таблиц в одном файле базы данных.
Однако, если я ошибаюсь, я думаю, вы могли бы ПРИСОЕДИНИТЬ базы данных, а затем использовать VIEW для упрощения ваших запросов.Или создайте таблицу в памяти и скопируйте все данные (но это еще хуже с точки зрения производительности, особенно если у вас большие базы данных)