【发布时间】:2018-12-26 02:33:52
【问题描述】:
我正在尝试以编程方式将表从访问权限移至 SQL Server。 我在系统权限上有一些限制,即:我不能使用 OPENDATASOURCE 或 OPENROWSET。
我想要实现的是将一些表从 Access 传输到 SQL Server,然后通过 vba (excel)/python 和 T-SQL 处理这些表。
问题在于移动桌子所需的时间。 我目前的流程是:
- 我使用 vba 宏,从 excel 导入数据并在访问中进行相同的转换,然后导入 SQL Server
- 销毁服务器中的表:“DROP TABLE”
- 使用 DoCmd.TransferDatabase 重新导入表
我注意到该操作似乎是基于一批行而不是直接完成的。每 1000 行需要 1 分半钟。在 Access 上执行相同的操作需要几秒钟。
我理解是SQL Server的一种特定方式,使用10行批量导入,可能是为了对数据有更多的访问权限:Micorsoft details
但在上述过程中,我只想尽快将表从访问 SQL 中复制出来,然后我会避免跨平台链接,我将只在 SQL Server 上执行操作。
哪种方法可以更快地实现这一目标?
【问题讨论】:
-
10-rows-at-a-time 用于将数据从 Sql Server 提取到 Access 中,而不是用于插入。
-
(虽然问题是关于 Oracle,但答案是关于 SQL Server。)——另见stackoverflow.com/questions/32759978/…
-
为什么要使用 Access 表?无论您对 access 表做什么,都可以通过链接到 access 的第二个 SQL 表来完成,假设仅使用一个表无法完成您需要的操作。
-
嗨,因为像 OPENDATASOURCE 或 OPENROWSET 这样的函数被阻止了,所以我无法将 excel 文件导入 SQL Sever。那么对于相同的简单操作,访问速度异常快。
标签: sql-server excel vba tsql ms-access