Ошибка 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
Я получаю ошибку: 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 ответ
Решение
Я выяснил ответ на эту проблему. По-видимому, для соединений ODBC существует тайм-аут. Добавив код qdf.ODBCTimeout = 900 '15 Min
основная вставка была в состоянии завершить.
Спасибо за все время в этом!