错误 3146:ODBC--传递批量插入调用失败

Error 3146: ODBC--Call Failed with pass-through bulk insert

我正在尝试使用传递查询执行批量插入语句。我有以下代码:

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

我得到的错误是:3146,描述为 ODBC--call failed.

如果我将 sSQL 语句更改为 INSERT STATEMENT 或 SELECT 语句,查询执行得很好。

为什么我的 BULK INSERT 在 PASS through 查询中不起作用?我打印出我的 sSQL 字符串以确保它是正确的,它似乎是:

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

我找到了这个问题的答案。显然,ODBC 连接有超时设置。通过添加代码 qdf.ODBCTimeout = 900 '15 Min 可以完成批量插入。

感谢大家的时间!