Как я могу объединить много баз данных SQLite? - PullRequest
61 голосов
/ 17 сентября 2008

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

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

Ответы [ 5 ]

62 голосов
/ 18 июня 2012

Подводя итог Набб пост в ответе DavidM:

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

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

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

18 голосов
/ 17 сентября 2008

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

1 голос
/ 15 ноября 2018

Хотя это очень старая тема, это все еще актуальный вопрос в сегодняшних потребностях программирования. Я публикую это здесь, потому что ни один из предоставленных ответов пока не является кратким, простым и понятным. Это ради Googlers, которые в конечном итоге на этой странице. GUI мы идем:

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

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

1 голос
/ 17 сентября 2008

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

0 голосов
/ 17 сентября 2008

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...