gpt4 book ai didi

vba - 微软 Access : Import CSV file from a list of multiple files

转载 作者:行者123 更新时间:2023-12-03 09:27:46 24 4
gpt4 key购买 nike

我有一个 *.csv 格式的约 10 GB 的大文件。这是1960年至今不同地区的数据。我能够按区域分解文件。大约有 8000 个区域,我按区域分割文件,因此我有 8000 个文件,每个文件大约 2 MB。

我想知道创建 Access 数据库系统来查找每个区域的数据的最有效方法是什么。是由:

  1. 按区域名称将文件分成小文件(即每个区域8000个文件),然后导入它们每次 Access ,或者

  2. 将它们分割成每个约 1 GB 的恒定大小并进行查询。

无论哪种情况,如何将文件导入 Access?

最佳答案

您可能知道,Access 数据库文件的大小限制为 2GB,因此您几乎肯定无法将所有信息保存在一个文件中。即使它勉强适合,将这么多信息保存在一个 Access 数据库文件中也可能会导致处理速度相当慢。

根据您数据的“形状”,Access 中可能存在其他限制,这些限制可能会在您的特定情况下造成困难。例如,表(或查询)仅限于 255 列。如果您还没有这样做,请查看 Access specifications在进一步进行此操作之前。

无论如何,请考虑使用另一个数据库作为后端。您的数据甚至对于 SQL Server Express Edition 中的单个数据库来说可能太大(我记得每个数据库的总大小最大为 10GB),但即使您必须将数据拆分为两个 SQL Express 数据库,处理起来也会更容易十多个(或更多?)Access 数据库。

请记住,如果您使用不同的数据库后端,您仍然可以使用 Access 作为查询和报告工具(通过 ODBC 链接表)。

编辑回复:评论

根据您的描述,您是否永远需要跨区域查询(请记住,“从不”是非常很长一段时间™) 那么你的 8000 个文件的方法是可行的。但是,我不一定建议您每次运行查询时都导入相应的 CSV 数据。相反,我会借鉴 Tom 和 HansUp 的答案:

计划“A”:首先直接针对 CSV 文件本身运行查询,看看速度是否足以满足您的需求。您可以通过创建 linked table 来测试这一点到 CSV 文件并运行一些典型的查询。正如 Tom 提到的,CSV 链接表无法建立索引,因此如果您发现查询太慢,那么您可能必须采用“B”计划。

计划“B”:如果您确实需要导入 CSV 数据,那么您可能需要使用 HansUp 的建议,即使用 DoCmd.TransferText 来帮助自动化过程。为每个查询导入特定的 CSV 文件似乎很浪费,因此您可能会考虑创建约 8000 个 .accdb 文件,然后使用如下查询...

strSQL = _
"SELECT * FROM TableName " & _
"IN ""C:\__tmp\region12345.accdb"" " & _
"WHERE StartDate BETWEEN #2013-05-10# AND #2013-05-15#"

...您的代码可以替代的地方

  • 基于感兴趣区域的相应 .accdb 文件的名称,以及

  • 所需的日期范围。

关于vba - 微软 Access : Import CSV file from a list of multiple files,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16776241/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com