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

StackOverflow https://stackoverflow.com/questions/80801

  •  09-06-2019
  •  | 
  •  

Вопрос

Если у меня есть большое количество баз данных 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, которые попадают на эту страницу.Графический интерфейс, который мы идем:

  1. Скачать Sqlitestudio
  2. Добавьте все файлы базы данных, используя команду Ctrl + O Сочетание клавиш
  3. Дважды щелкните каждый загруженный файл базы данных, чтобы открыть/активировать/развернуть их все.
  4. Веселая часть:просто щелкните правой кнопкой мыши по каждой из таблиц и выберите Copy, а затем перейдите к целевой базе данных в списке загруженных файлов базы данных (или создайте новую, если необходимо), щелкните правой кнопкой мыши целевую базу данных и выберите Paste

Я был поражен, осознав, что такую ​​сложную задачу можно решить, используя древний навык программирования, который называется:скопировать и вставить :)

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

Однако, если я ошибаюсь, я думаю, вы могли бы ПРИСОЕДИНИТЬ базы данных, а затем использовать VIEW для упрощения ваших запросов.Или создайте таблицу в памяти и скопируйте все данные (но это еще хуже с точки зрения производительности, особенно если у вас большие базы данных)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top