1

在将大约 30,000 行数据从制表符分隔文件导入 Access 数据库时,我无法获得所需的速度。文件导入由我编写的 VB.net 2010 程序管理。

该程序当前循环遍历每一行并为每一行发出一个 SQL 插入语句。然而,这需要大约 2 小时才能完成。如果我使用 Get External Data 手动将同一个文件直接导入访问,大约需要 30 秒。

我在想我可能能够创建一个链接到 MS 访问的 datagridview 并以某种方式运行本机 .net 命令将文件导入到 datagridview 中,然后快速写入要访问的数据,但我不确定这是否可能。

顺便说一句,手动导入不是一种选择,由于各种原因,它需要通过 vb.net 应用程序。

任何人都可以就我如何加快速度提供任何建议吗?

谢谢西蒙

4

2 回答 2

2

您可以针对您的 MS Access 连接运行 SQL 语句以导入 text/csv。导入新表:

cmd.CommandText =
    "SELECT F1 AS id, F2 AS firstname " &
    "INTO MyNewTable " &
    "FROM [Text;FMT=Delimited;HDR=No;CharacterSet=850;DATABASE=C:\__tmp].table1.csv;"

要导入现有表:

cmd.CommandText =
    "INSERT INTO MyExistingTable " &
    "SELECT F1 AS id, F2 AS firstname " &
    "FROM [Text;FMT=Delimited;HDR=No;CharacterSet=850;DATABASE=C:\__tmp].table1.csv;"

您还可以将 schema.ini 文件用于非标准分隔符。(将数据导出到预先格式化的文件中,从访问中创建逗号分隔文件 (csv) - 每天从 Windows 安排

于 2012-07-05T09:24:18.093 回答
-1

问题是为什么要使用.Net?如果您使用较新版本的 Access,它将在 SQL 上完整运行。这允许您使用 SQL批量插入。批量插入使 SQL 中所有其他数据插入方法都大吃一惊。

如果您需要操作数据,您可以将原始数据批量插入堆表中(只是文件中数据的原始转储),然后使用 SQL 将相关数据更新/移动到正确的表中。

于 2012-07-05T08:27:32.107 回答