【问题标题】:How to import an entire excel spreadsheet table into a table on a SQL Server如何将整个 Excel 电子表格表格导入 SQL Server 上的表格
【发布时间】:2018-04-18 11:20:29
【问题描述】:

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

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

SQL 中是否有可以自动执行此操作的命令?如果是这样,它会比逐行更新更快吗?我在网上查阅了各种文章,但到目前为止都找到了可行的解决方案。

任何建议将不胜感激,谢谢。

【问题讨论】:

标签: sql-server excel vba


【解决方案1】:

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

选项 1 - SSIS

  1. 右键单击 SQL Server 中的 DB(在 SSMS 中)
  2. 选择:任务:导入数据
  3. 按照此向导进行操作,但请确保在此过程结束时选择保存 SSIS 包
  4. 将其保存到您的 rfile 系统(有很多方法可以做到这一切,但这是一种方法)
  5. 使用 DTEXEC 随时从命令行运行包:

    DTEXEC /FILE ImportPackacge.dtsx

如果您遵循此选项,您可以比较在向导中手动导入时它的运行速度,这将使您大致了解它的运行速度,并且通常比单独插入要快得多。

请注意,您可以在 SSIS 包中创建一个完整的加载过程,该包还可以转换和验证数据。

逐步导入示例 - 不保存:https://docs.microsoft.com/en-us/sql/integration-services/import-export-data/get-started-with-this-simple-example-of-the-import-and-export-wizard

保存包: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

请注意,该文章讨论了其他可能值得研究的批量导入技术。

每个选项都有很多更好的点。但根据您的技能水平/知识,这可能是您获得解决方案所需的全部信息。

还要注意有很多方法可以做到这一点; access 和 excel 和 sql server 都可以在这里完成部分或全部繁重的工作。我会先找到你最熟悉的那些,然后检查它们的速度,看看它是否足够好。

我实际上可能会先尝试这个解决方案(来自 FunThomas 发布的评论),它将 excel 文件作为表格打开并直接复制,这对于任何了解 sql 的人来说都非常简单:

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

【讨论】:

  • BULK INSERT 需要 SQL Server 的 INSERT 和 ADMINISTER BULK OPERATIONS 权限。大多数 DBA 不会同意(我当然没有),因此创建 SSIS 包可能是大多数开发人员唯一可行的选择。
猜你喜欢
  • 2010-10-03
  • 1970-01-01
  • 2013-08-22
  • 1970-01-01
  • 2014-03-11
  • 2010-09-27
  • 1970-01-01
  • 2011-08-09
  • 2011-12-14
相关资源
最近更新 更多