如果我有大量 SQLite 数据库,并且全部具有相同的架构,那么将它们合并在一起以便对所有数据库执行查询的最佳方法是什么?

我知道可以使用 这样做,但它有 一个极限 32 和 64 个数据库,具体取决于计算机上的内存系统。

有帮助吗?

解决方案 2

这将根据需要进行,一天可能进行几次。我认为它的工作方式就像 http://sqlite.1065341.n5.nabble.com/Attempting-to-merge-large-databases-td39548.html 其中数据库被合并成一个大数据库,执行查询,然后删除大数据库。

其他提示

总结一下从 纳布尔帖子 在 DavidM 的回答中:

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

根据需要重复。

笔记:添加 detach toMerge; 根据迈克的评论。

如果您只需要执行一次合并操作(以创建一个新的更大的数据库),您可以创建一个脚本/程序来循环所有 sqlite 数据库,然后将数据插入到主(大)数据库中。

尽管这是一个非常古老的线程,但这仍然是当今编程需求中的一个相关问题。我将其发布在这里是因为所提供的答案都不够简洁、简单且直截了当。这是为了最终出现在该页面上的 Google 员工。图形用户界面我们去:

  1. 下载 sqlite工作室
  2. 使用以下命令添加所有数据库文件 Ctrl + O 键盘快捷键
  3. 双击每个现在加载的数据库文件以打开/激活/展开它们
  4. 有趣的部分:只需右键单击每个表,然后单击 Copy, ,然后转到已加载数据库文件列表中的目标数据库(或根据需要创建新数据库),右键单击目标数据库,然后单击 Paste

我惊讶地意识到,这样一项艰巨的任务可以使用古老的编程技能来解决,这种技能称为:复制和粘贴 :)

无意冒犯,就像一位开发人员对另一位开发人员一样,我担心您的想法似乎效率极低。在我看来,您应该在同一个数据库文件中存储多个表,而不是统一 SQLite 数据库。

但是,如果我错了,我想您可以附加数据库,然后使用视图来简化查询。或者创建一个内存表并复制所有数据(但这在性能方面更差,特别是如果您有大型数据库)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top