2016-06-29 61 views
0

我正在嘗試使用傳遞查詢來執行大容量插入語句。我有以下代碼:錯誤3146:ODBC - 調用失敗,傳遞大容量插入

sSQL = "BULK INSERT tbl_Name " 
sSQL = sSQL & "FROM 'C:\Users\UserName\Desktop\File.txt' " 
sSQL = sSQL & "WITH " 
sSQL = sSQL & "(" 
sSQL = sSQL & "FIELDTERMINATOR = ',', " 
sSQL = sSQL & "ROWTERMINATOR='\n'" 
sSQL = sSQL & ");" 

Set db = CurrentDb 

    Set qdf = db.CreateQueryDef("") 

     qdf.Connect = db.TableDefs("dbo_tbl_Name").Connect 
     qdf.ReturnRecords = False 
     qdf.SQL = sSQL 
     qdf.Execute dbFailOnError 

    Set qdf = Nothing 

Set db = Nothing 

我得到的錯誤是:3146ODBC--call failed.

說明如果我改變sSQL聲明的INSERT語句或SELECT語句時,查詢執行就好了。

爲什麼我的BULK INSERT不能通過查詢在PASS中工作?我打印出我的sSQL字符串,以確保它是正確的,它似乎是:

BULK INSERT tbl_Name FROM 'C:\Users\UserName\Desktop\File.txt' WITH (FIELDTERMINATOR=',', ROWTERMINATOR='\n'); 
+0

附註:您可以將第一段代碼寫爲:'sSQL =「BULK INSERT tbl_Name&_'換行符'更多代碼here'。或者請參閱https://msdn.microsoft.com/zh-cn/我們/圖書館/ ba9sxbw4.aspx –

+0

@湯姆 - 謝謝!我一定會嘗試這個。 – NLMDEJ

回答

0

我已經想出了這個問題的答案。顯然,ODBC連接有超時設置。通過添加代碼qdf.ODBCTimeout = 900 '15 Min可以完成批量插入。

感謝大家的時間!