通过需要很长时间的访问将记录插入到 SQL Server 链接表中[重复]
Posted
技术标签:
【中文标题】通过需要很长时间的访问将记录插入到 SQL Server 链接表中[重复]【英文标题】:Inserting records into SQL Server linked table via access taking a long long time [duplicate] 【发布时间】:2017-11-28 15:51:06 【问题描述】:我尝试将大约 57k 行从 MS Access 插入到 SQL Server 链接表中,但速度非常慢。有人可以帮我换一种方法吗?
task0 = "INSERT INTO dbo_WorkTable (ID, [Batch ID], [Pay Group], [Pay Group Description], [General Ledger Account], [General Ledger Cost Center], [General Ledger Department], [Work Center], [Pay Period Ending Date], Hours, Amount, Week, [Pay Type Code], [Pay Type Description], [File Number], Name, [HOURLY SALARY], [FULL TIME_PART TIME], ACTIVE_INACTIVE, [HOURLY RATE] )" _
& "SELECT WorkTable.ID, WorkTable.[L Batch ID], WorkTable.[Pay Group], WorkTable.[Pay Group Description], WorkTable.[General Ledger Account], WorkTable.[General Ledger Cost Center], WorkTable.[General Ledger Department], WorkTable.[Work Center], WorkTable.[Pay Period Ending Date], WorkTable.Hours, WorkTable.Amount, WorkTable.Week, WorkTable.[Pay Type Code], WorkTable.[Pay Type Description], WorkTable.[File Number], WorkTable.Name, WorkTable.[HOURLY SALARY], WorkTable.[FULL TIME_PART TIME], WorkTable.ACTIVE_INACTIVE, WorkTable.[HOURLY RATE]" _
& " FROM WorkTable; "
CurrentDb.Execute(task0), dbFailOnError
非常感谢任何帮助。
【问题讨论】:
好吧,你期待什么?将 57.000 条记录从 Microsoft Access 移动到 SQL Server 肯定需要一些时间。我们没有神奇的替代执行相同但更快代码 您可以使用 ADODB 打开与您的 SQL Server 的连接,然后使用 OPENDATASOURCE 执行插入回到您的访问数据库...也许。 something like this 否则你将单行插入所有 57000 条记录,这需要一段时间。 @ErikvonAsmuth 你觉得怎么样? 57,000 条记录并不多。我认为这里的问题是插入正在链接服务器上运行,最终执行 RBAR 插入而不是批量插入。编辑:JNevill 的想法是正确的。 另一个想法是使用 SSMS 或其他方式将访问表导入您的 SQL Server,然后直接在 SQL Server 中运行插入。真正的诀窍是将这些数据批量加载到您的 SQL Server 中。一旦你破解了那个坚果,那么你就是金子。 @JacobH 是的,这确实是问题所在,但是如果不是不可避免的话,在服务器上的另一台机器上使用正在运行的 Microsoft Access 数据库时避免逐行插入是很难的(链接JNevill 要求 Access 数据库位于同一台机器上,或者位于 SQL 服务器和执行命令的机器之间的共享驱动器上。 【参考方案1】:可以将 MS Access DoCmd.TransferText 方法放入宏中。此函数可以将表或查询转储到文本文件。它在本地(源)机器上运行得非常快。
使用适当的命令行开关创建一个调用bcp 实用程序的批处理文件以加载SQL Server 表。这将在远程(目标)SQL Server 数据库上同样快速地运行。确保检查错误日志文件以查找有错误的批次。您可以使用批量大小选项调整过程。
这将通过痛苦的行 (RBAR) 过程将您的行转换为 BULK LOAD 过程。
快乐编码
约翰·米纳
狡猾的 DBA
【讨论】:
以上是关于通过需要很长时间的访问将记录插入到 SQL Server 链接表中[重复]的主要内容,如果未能解决你的问题,请参考以下文章
将 JSON 数据插入 Core Data 存储需要很长时间
将视图插入表格 - 视图不需要很长时间才能运行 - 插入需要很长时间