我现在有另一个问题,因为数据库无法处理捕获的数据量,所以我们决定将事情移到服务器上。
缺点是:
我尝试过使用我现有的代码通过transferspreadsheet方法将数据导入到tmp文件中,但这对SQL Server来说已经很久了。我想继续以编程方式执行此操作并使用以下代码。我不确定这是否有效,因为我无法通过语法错误。如果有人能提供帮助,我们将不胜感激
代码开始:
Dim CN As ADODB.Connection
Dim strConn As String
Dim strSQL As String
Dim strXLSource As String
Dim lngRecsaff As Long
strConn = "Driver={SQL Server};Server=logistics.companyname.com;Database=ITM;Trusted_Connection=Yes;"
Set CN = New ADODB.Connection
CN.Open strConn
strXLSource = ("C:\Users\GONZW053\Documents\My Desktop Documents\Monster Database Exports\DTPM - WDW DLR\book1.xlsx;Extended Properties= Excel 12.0")
strSQL = "INSERT INTO [tmpWDWDLR] SELECT * FROM OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0','Data Source = '" & strXLSource & "')"
Debug.Print strSQL
CN.Execute strSQL, lngRecsaff, adExecuteNoRecords
Debug.Print "Records Affected: " & lngRecsaff
CN.close
Set CN = Nothing
我期待着帮助,因为这个网站和贡献者是一个很好的知识来源。谢谢!
答案 0 :(得分:0)
由于服务器上没有Excel文件,因此无法在OPENROWSET
或OPENDATASOURCE
命令中使用它。
但是,使用Access,您可以使用插入查询将数据从Excel文件插入SQL服务器:
INSERT INTO [ODBC;Driver={SQL Server};Server=logistics.companyname.com;Database=ITM;Trusted_Connection=Yes;].tmpWDWDLR
SELECT *
FROM [Sheet1$]
IN 'C:\Users\GONZW053\Documents\My Desktop Documents\Monster Database Exports\DTPM - WDW DLR\book1.xlsx'[Excel 12.0 XML;HDR=No;]
(Sheet1$
是您搬家的Excel文件的范围)
据我所知,这种方法的开销相对较小。当然,移动大文件只需要时间。