从Excel导入到SQL Server 2014的批量导出

时间:2017-11-02 17:48:01

标签: sql-server excel vba

测试连接错误。

SQL.ActiveConnection = Cn
 FROM (OPENROWSET('Microsoft.Jet.OLEDB.4.0','Data    Source=C:\Path\To\File.xls;Extended Properties=Excel 8.0;HDR=YES', Sheet1$)) wb
 End Sub

2 个答案:

答案 0 :(得分:1)

如果你有SSIS,那么走这条路会更好更快。这样做意味着它不再是出口过程;它将是一个导入,将在SQL Server和SSIS中执行所有任务。

答案 1 :(得分:1)

考虑使用OPENROWSET到Excel工作簿的SQL Server分布式查询。下面假设您具有运行MSSQL命令的权限,并且您的Excel文件具有标题:

INSERT INTO [dbSomething].[dbo].[tbl_Test] ([MyFieldValue]) 
SELECT wb.ColumnName 
FROM (OPENROWSET('Microsoft.ACE.OLEDB.12.0', 
   'Data Source=C:\Path\To\File.xlsx;Extended Properties=Excel 12.0;HDR=YES', Sheet1$)) wb

或者对于较旧的工作簿类型:

INSERT INTO [dbSomething].[dbo].[tbl_Test] ([MyFieldValue]) 
SELECT wb.ColumnName 
FROM (OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
   'Data Source=C:\Path\To\File.xls;Extended Properties=Excel 8.0;HDR=YES', Sheet1$)) wb

要运行此操作查询,请将整个SQL放在VBA字符串中并执行连接。不需要参数化,因此不需要ADO命令对象。

strSQL = "INSERT INTO ... wb"

Cn.Execute strSQL