我的公司目前有一个用VBA
MS Access
编写的脚本,该脚本从一系列excel电子表格中提取数据并更新SQL服务器上的表格。按照目前的情况,VBA脚本单独导入行,使用For-loop
循环遍历行并在SQL服务器上构建/执行一系列INSERT
命令。这非常慢,而且有问题,因为我们需要定期更新表格。
我的问题是,如何在访问中使用VBA将整个Excel电子表格批量导入SQL服务器上的表格?
SQL中是否有自动执行此操作的命令?如果是这样,它会比逐行更新更快吗?我已经在网上查看了各种文章,但到目前为止已经找到了可行的解决方案。
任何建议都将不胜感激,谢谢。
答案 0 :(得分:1)
这不是一个完整的答案,但我认为你应该考虑两个调查线:
选项1 - SSIS :
使用DTEXEC从命令行运行包:
DTEXEC /FILE ImportPackacge.dtsx
如果您按照此选项可以比较在向导中手动导入时运行的速度,这将使您大致了解它的运行速度,并且通常比单独插入快得多。
请注意,您可以在SSIS包中创建整个加载过程,该过程也可以转换和验证数据。
DTEXEC - 用于运行包的命令行工具:https://docs.microsoft.com/en-us/sql/integration-services/packages/dtexec-utility
选项2 - BULK INSERT :
查看批量插入命令以及如何在VBA代码中应用
请注意,该文章讨论了可能值得研究的其他批量导入技术。
每个选项都有很多细节......但根据您的技能水平/知识,这可能是您获得解决方案所需的所有信息。
还要注意有很多方法可以做到这一点;访问和excel和SQL服务器每个都有办法在这里做一些或所有繁重的工作。我会先找到你最熟悉的那些并检查它们的速度,看看它是否足够好。
我实际上可能首先尝试这个解决方案(来自FunThomas发布的评论),将excel文件作为表打开,直接复制为非常简单的任何知道sql的人都可以理解: