sql - 自动从Access中插入数据到Sql server

标签 sql sql-server ms-access oledb

情况: 我们每月收到统计源数据。它以一张 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/

相关文章:

sql - 重命名 SQL 列错误 : Either the parameter @objname is ambiguous or the claimed @objtype (COLUMN) is wrong

php - 在 MySQL 中存储嵌套导航菜单

vba - MS Access VBA 对象需要错误

delphi - 我可以用 Delphi 打开 CD 上的 MS access mdb 文件吗

c# - Dapper 异常 - Get<T> 仅支持具有 [Key] 属性的实体,但已定义 [key]

sql - 过滤器返回空白报告 Access 2010

java - MySQL 根据另一个表选择表中的值

database - 带where子句执行的sql查询

sql-server - 可以提取存储在 XML 中的列中的 *distinct* 键(跨所有行)吗?

sql-server - SELECT FOR XML 查询速度慢吗?