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

时间:2016-06-29 12:21:13

标签: vba bulkinsert access pass-through

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

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中工作?我打印出我的sSQL字符串以确保它是正确的,它似乎是:

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

1 个答案:

答案 0 :(得分:0)

我已经找到了这个问题的答案。显然,ODBC连接有一个超时设置。通过添加代码public @Bean(name = {"a", "b"}) C getInstance() { ... } ,批量插入就能够完成。

感谢大家的时间!