如何将整个Excel电子表格表导入到SQL Server上的表中

我公司目前在MS Access中有一个使用VBA编写的脚本,它从一系列excel电子表格中提取数据并更新SQL服务器上的表格。 就目前而言,VBA脚本分别导入行,使用For-loop循环遍历行并在SQL服务器上构build/执行一系列INSERT命令。 这是非常缓慢的问题,因为我们需要定期更新表格。

我的问题是,我们如何将整个excel电子表格批量导入到使用VBA访问的SQL服务器上的表中?

在SQL中有一个命令会自动执行此操作吗? 如果是这样的话,是否比按行更新更快? 我已经在网上查过各种文章,但到目前为止find了一个可行的解决scheme。

任何意见,将不胜感激,谢谢。

这不是一个完整的答案,但我认为你应该考虑两个方面的调查:

选项1 – SSIS

  1. 右键单击SQL服务器中的数据库(SSMS内)
  2. select:任务:导入数据
  3. 按照这个向导,但是确保在这个过程结束时select保存SSIS包
  4. 保存到你的rfile系统(有很多方法可以做到这一点,但这是一种方法)
  5. 使用DTEXEC从命令行运行包:

    DTEXEC /FILE ImportPackacge.dtsx

如果你遵循这个选项,你可以比较在向导中手动导入时它运行的速度,这会给你一个粗略的想法,说明它的运行速度,通常比单独插入要快得多。

请注意,您可以在SSIS包中创build一个可以转换和validation数据的整个加载过程。

一步一步导入示例 – 不保存: https : //docs.microsoft.com/en-us/sql/integration-services/import-export-data/get-started-with-this-simple-example-of-在import和出口的向导

保存软件包: https : //docs.microsoft.com/en-us/sql/integration-services/import-export-data/save-and-run-package-sql-server-import-and-export-wizard

运行包: https : //docs.microsoft.com/en-us/sql/integration-services/packages/run-integration-services-ssis-packages

DTEXEC – 用于运行包的命令行工具: https ://docs.microsoft.com/en-us/sql/integration-services/packages/dtexec-utility

选项2 – 批量插入

查看批量插入命令以及如何将其应用于VBA代码中

https://docs.microsoft.com/en-us/sql/relational-databases/import-export/bulk-import-and-export-of-data-sql-server

请注意,文章谈论其他大量import技术,可能值得研究。

每个选项都有很多更好的点,但根据你的技能水平/知识,这可能是你需要得到解决scheme的所有信息。

另外请注意,有这么多的方法, access和excel以及sql server都有办法在这里做一些或者所有的繁重工作。 我会先find那些你最熟悉的,并检查他们的速度,看看是否足够好。

我可能会开始尝试这个解决scheme(从FunThomas发表的评论),打开excel文件作为一个表,并直接复制为任何人谁知道SQL的理解非常简单:

https://stackoverflow.com/a/473019/359135