我正在尝试使用传递查询执行批量插入语句。我有以下代码:
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');
答案 0 :(得分:0)
我已经找到了这个问题的答案。显然,ODBC连接有一个超时设置。通过添加代码public @Bean(name = {"a", "b"}) C getInstance() { ... }
,批量插入就能够完成。
感谢大家的时间!