Вопрос:

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

database sqlite

57396 просмотра

5 ответа

16394 Репутация автора

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

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

Автор: DavidM Источник Размещён: 17.09.2008 07:28

Ответы (5)


1 плюс

33853 Репутация автора

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

Автор: Espo Размещён: 17.09.2008 07:31

15 плюса

16394 Репутация автора

Решение

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

Автор: DavidM Размещён: 17.09.2008 08:03

-3 плюса

41332 Репутация автора

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

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

Автор: Robert Gould Размещён: 17.09.2008 09:33

55 плюса

8432 Репутация автора

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

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

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

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

Автор: dfrankow Размещён: 18.06.2012 06:58

0 плюса

455 Репутация автора

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

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

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

Автор: Damilola Olowookere Размещён: 15.11.2018 06:19
Вопросы из категории :
32x32