MS-Access:对链接的 CSV 文件的慢查询

Posted

技术标签:

【中文标题】MS-Access:对链接的 CSV 文件的慢查询【英文标题】:MS-Access: Slow queries on linked CSV files 【发布时间】:2016-08-14 13:30:48 【问题描述】:

My Access 2016 db 有几个 CSV 文件的链接,其中一些文件很大 (>120MB)。在对这些 CSV 文件运行复杂查询时,速度太慢而无法实用。我无法制作这些链接的 CSV 文件的本地表,因为在每个运行查询周期之后,这些 CSV 文件都会由外部服务器使用更新的数据进行刷新。

我可以做些什么来显着加快速度?

【问题讨论】:

不要使用 CSV 文件进行查询,@ThunderFrame 将在下面解释。 CSV 是文本文件,通常用于跨系统迁移/移植数据或存档,不应在应用程序中使用。 【参考方案1】:

您最好将 CSV 数据导入本地临时/临时表。然后可以对临时表运行查询,如果查询需要使用连接,或者非常复杂,可以考虑在临时表上酌情使用索引。

查询完数据后,您可以截断或删除临时表。

【讨论】:

我知道这个技巧,但问题是数据库文件大小很快达到 2GB 并且自动压缩数据库并不容易 临时表不必在同一个数据库中。您无法获得全部速度,但链接的 Access 表比链接的 CSV 文件更快。 即使我为临时表创建了一个新数据库;如果我继续覆盖它们,那么新的 db 大小会膨胀,需要定期压缩,否则它会在 2GB 时停止工作。 @Kashif 正如 ThunderFrame 试图解释的那样,您可以将临时表分隔在多个 Access 文件中,并将所有文件链接到一个 mdb/accdb 以克服 one 限制的 2GB b> 个人访问文件。 您可以使用自动化压缩远程数据库,也可以即时创建并链接到临时数据库。【参考方案2】:

另一种选择是将 CSV 文件加载(与导入完全相同)到mysql

Import CSV File Into MySQL Table

这是一个非常快速的过程 - 接近于简单的文件副本。

然后使用MyODBC通过ODBC连接MySQL实例。

【讨论】:

MySQL 什么时候开始讨论的? 鉴于要求/限制,这似乎是一个不错的方法。

以上是关于MS-Access:对链接的 CSV 文件的慢查询的主要内容,如果未能解决你的问题,请参考以下文章

将分隔文件 (.csv) 中的行导入 MS-Access 表

MS-Access 平面文件导出错误

使用包含 SUM() 字段的子查询在 MS-Access 中编辑查询

从 MS-Access 中联合选择查询中的 SQLite 语法错误

ms-access 超链接中#literal 的语法?

基于包含子查询的查询的 ms-access 交叉表查询