情况: 我们每月收到统计源数据。它以一张 CD 的形式提供,带有一个包含两个表的 Access 数据库。所以我们有 1 个 *.mdb 文件,里面有 2 个表。分析师应该能够导入数据、计算和标准化数据并检查结果。如果结果很好,则填充数据。分析师不是程序员,他们没有 SQLServerManagementStudio。
我的任务: 使用按钮创建 Access 表单作为分析师的前端:导入、计算、检查、填充。每个按钮都会触发路径槽查询,该查询未在 sql server 端运行存储过程。
我的问题: 我项目的瓶颈是数据导入。它应该是自动完成的(不是手动的,因为分析师没有安装管理工作室)。
我尝试过的:
1) 我将 SQL 服务器的表链接到 access 并尝试使用常规查询来复制(INSERT INTO ** FROM *)但是它花费的时间太长。 (我在两个表中有大约 400 万行)
2) 正如我所喜欢的那样,BULK INSERT 不适用于从 Access 文件导入。
3) OPENROWSET 方法:
SELECT *
FROM OPENROWSET( 'Microsoft.Jet.OLEDB.4.0','\\euro-dc\DOTS\2014\dots.mdb';'admin';'',TimeSeries)
返回错误:
Msg 7308, Level 16, State 1, Line 1 OLE DB provider 'Microsoft.Jet.OLEDB.4.0' cannot be used for distributed queries because the provider is configured to run in single-threaded apartment mode.
Openrowset 解决方案不是可取的。我想避免它。因为它会在某些计算机上运行,而不会在其他计算机上运行,因为 OLDB 驱动程序。 Windows 重新安装后将需要检查 OLEDB 驱动程序...它不是很舒服,因为有 15 个分析师。仅当没有其他方式导入数据时。
\euro-dc\dots 文件夹可供 sql server Access - 它在我的其他项目中进行了测试。
将欣赏任何新鲜的想法。 谢谢
最佳答案
使用导入向导并为要导入的每组数据保存导入规范。然后在执行导入规范的按钮下编写一些代码/宏。 您导入的表可以在 Access 中构建,然后升级到 SQL Svr。
400 万条记录会很慢,因此您可能希望将其放在单独的 MDB 中,这样它就不会占用分析师的工作 MDB。
关于sql - 自动从Access中插入数据到Sql server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25245559/