跨多个数据库的 SQLite 视图。这个可以吗?有没有更好的办法?

Posted

技术标签:

【中文标题】跨多个数据库的 SQLite 视图。这个可以吗?有没有更好的办法?【英文标题】:SQLite view across multiple databases. Is this okay? Is there a better way? 【发布时间】:2010-09-27 21:46:11 【问题描述】:

使用 SQlite,我将一个大型数据库分为几年: DB_2006_thru_2007.sq3 DB_2008_thru_2009.sq3 DB_current.sq3 它们都有一个名为 hist_tbl 的表,其中包含两列(键、数据)。

要求是: 1. 能够一次访问所有数据。 2. 只插入到当前版本。 3.随着时间的推移,数据会不断的分裂。 4. 访问是通过具有独占访问权的单个程序。 5.程序可以接受一些设置SQL,但访问一个或多个数据库时需要运行相同的SQL。

为了统一查看它们,我执行以下操作(实际上是在程序中,但此处显示的是命令行): sqlite3 DB_current.sq3

将数据库“DB_2006_thru_2007.sq3”附加为 hist1; 将数据库“DB_2008_thru_2009.sq3”附加为 hist2; 创建临时视图 hist_tbl 为 从 hist1.hist_tbl 联合中选择 * 从 hist2.hist_tbl 联合中选择 * 从 main.hist_tbl 中选择 *;

现在有一个 temp.hist_tbl(视图)和一个 main.hist_tbl(表)。 当我在不限定表格的情况下选择时,我通过视图获取数据。 这是可取的,因为我可以根据我的设置方式对连接视图或单个数据库使用我的罐装 sql 查询。此外,我总是可以插入 main.hist_tbl。

问题 1:有什么缺点? 问题2:有没有更好的方法?

提前致谢。

【问题讨论】:

【参考方案1】:

问题 1:有什么缺点?

您必须更新视图EVERY财政。年。

问题2:有没有更好的办法?

添加日期列,以便您可以搜索给定时间跨度内的事物,例如财政年度。

【讨论】:

实际上,由于视图处于临时状态,因此我在启动时创建了视图(在一天开始时创建一次)。创建视图成本高吗? @Pete:视图只是一个准备好的 SQL 语句;在查询中引用它之前,它不会占用任何资源。

以上是关于跨多个数据库的 SQLite 视图。这个可以吗?有没有更好的办法?的主要内容,如果未能解决你的问题,请参考以下文章

Azure 网站可以跨多个可用区扩展吗

跨多个 sqlite db 文件连接

Android 应用程序 - 跨多个设备同步 SQLite 数据库

一个表可以跨多个数据库共享吗

在 SQLite 中计算多个聚合时可以消除子查询吗?

Sqlalchemy 可以很好地处理多个附加的 SQLite 数据库文件吗?