将带有Access前端的CSV文件导入SQL Server

时间:2014-01-15 22:44:59

标签: sql sql-server database ms-access

背景

在我的公司,我们有许多CSV文件,必须导入SQL Server。 CSV文件包含多维市场模拟,它们以EAV形式存储(2列和10 ^ 6到10 ^ 10行)。它们的大小是可变的,但它超过500Mb并不罕见。

到目前为止,这些文件是由数据库管理员通过SSMS导入SQL Server的。

每次输入都应该获得ImportationID和Timestamp。对于手动执行此操作的数据库管理员来说,这非常耗时且容易出错。

因此,创建了一个Access前端,以便在使用列表框进行选择后,允许每个用户轻松地将CSV文件导入服务器。 现在,我遇到了通过Access界面导入CSV文件的问题。

问题:

以下是我考虑但可能无法实现的选项:

  • 将一些T-SQL命令传递给SQL Server,如此处所列(Access不允许)
  • 使用VBA循环逐行导入CSV(对于10 ^ 6到10 ^ 10行需要太长时间)
  • 在Access数据库中导入CSV文件,然后将表导出到SQL Server(Access的2Gb大小限制使其无法实现)

是否还有其他选项可以使用Access执行此任务?

1 个答案:

答案 0 :(得分:2)

一种可能的解决方案如下。您的Access前端有一个表单,它接受三个值:文件名/位置; ImportationID;时间戳。用户输入此数据后,“Go”或“Submit”按钮将触发接受这3个变量的SQL Server数据库上的存储过程。

存储过程将发出BulkInsert(或您链接到的其他命令)以将CSV导入数据库,然后根据您的业务规则操作数据并对其进行转换(例如,正确设置ImportationID和Timestamp) )。

这是数据库开发人员(或可能是数据库管理员)应该能够设置的,并且可以对数据库强制执行任何验证或安全约束。