sql - 以编程方式将 Ms Excel 文件导入 SQL Server

标签 sql sql-server vba ms-access

我需要创建一个程序,根据命令将数据从 MS Excel 电子表格上传到 SQL 服务器。我的背景是 Access VBA 我正在尝试使用 Microsoft 支持网站上描述的以下任一分布式查询方法:( https://support.microsoft.com/en-us/help/321686/how-to-import-data-from-excel-to-sql-server )。我的表名和文件名不同,否则我使用的是下面的确切代码。我收到错误消息:OLE DB 提供程序“Microsoft.ACE.OLEDB.4.0 尚未注册。”我试过其他 OLEDB 版本无济于事。不确定如何检查我需要哪个版本的驱动程序。我正在使用的 SQL 服务器是 64 位的,但我的本地机器是 32 位的,我认为这是导致问题的原因。如果有人可以帮助简化这个问题并指出正确的方向,我将不胜感激。我精通 VBA 并具有一些 SQL 背景。除此之外,我没有太多的编程背景。谢谢!

SELECT * INTO XLImport3 FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source=C:\test\xltest.xls;Extended Properties=Excel 8.0')...[Customers$]

SELECT * INTO XLImport4 FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:\test\xltest.xls', [Customers$])

最佳答案

查询:

SELECT * INTO [TableName]
FROM OPENDATASOURCE( 'Microsoft.ACE.OLEDB.12.0', 'Excel 12.0 Xml; Database=' + [SpreadsheetFullPath] + ';IMEX=1'' )...[' + [WorksheetName] + '$]'

注意事项:

  1. 请记住,查询是在 SQL 服务器上执行的,因此 [SpreadsheetFullPath] 是服务器上的路径,而不是本地计算机上的路径。
  2. 接受 UNC 路径 (\\sharedDir\...)。
  3. 保持要导入的 Excel 工作表简单。
  4. 当出现故障时,此驱动程序返回的错误非常无用,因此请通过观察 3 来避免它们。
  5. 您可能需要在数据库服务器上安装驱动程序:Office 2010 , Office 2016

关于sql - 以编程方式将 Ms Excel 文件导入 SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45020994/

相关文章:

mysql - Codeigniter insert_batch问题

excel - 将新标签页复制并粘贴到 MSForms.Page 中

vba - 一列的 Excel VBA 宏,如果为真,则将公式应用于另一列

php - 检查是否为空

try-with-resources 中的 Java 准备语句不起作用

MYSQL:左连接并使用 group_concat 将外观限制为一个

sql - IF THEN 在存储过程中循环

sql-server - 在 SQL Server 2005 中,有什么方法可以立即更改整个数据库的排序规则吗?

sql - 为每组选择前 2 个值

excel - 分钟到小时