0

パススルー クエリを使用して一括挿入ステートメントを実行しようとしています。次のコードがあります。

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 が機能しないのはなぜですか? 正しいことを確認するために sSQL 文字列を出力すると、次のようになります。

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

1 に答える 1

0

私はこの問題の答えを見つけました。どうやらODBC接続のタイムアウト設定があるようです。コードを追加することでqdf.ODBCTimeout = 900 '15 Min、一括挿入を完了できました。

みんなの時間をありがとう!

于 2016-06-29T12:50:58.483 に答える