BULK INSERT コマンドを使用してデータを一括挿入するためのストアド プロシージャを作成しようとすると、エラーが発生する場合があります。このようなエラーの 1 つは、ストアド プロシージャのファイル名パラメーターにファイルパス変数を割り当てようとしたときに発生します。
一般的な BULK INSERT クエリでは、ファイル パスを文字列として指定すると正しく機能します。
BULK INSERT ZIPCodes FROM 'e:-digit Commercial.csv' WITH ( FIRSTROW = 2 , FIELDTERMINATOR = ',', ROWTERMINATOR = '\n' )
ただし、変数ファイル パスを使用してストアド プロシージャを作成しようとすると、次のような問題が発生する可能性があります。エラー:
create proc dbo.InsertZipCode @filepath varchar(500)='e:-digit Commercial.csv' as begin BULK INSERT ZIPCodes FROM @filepath WITH ( FIRSTROW = 2 , FIELDTERMINATOR = ',', ROWTERMINATOR = '\n' ) end
'@filepath' および 'with' 付近の構文が正しくありません
このエラーは、BULK INSERT コマンドがファイル パスを変数としてサポートしていないために発生します。この問題を解決するには、次のいずれかを実行できます。
動的 SQL を使用した BULK INSERT の構築ステートメント
DECLARE @filepath nvarchar(500) SET @filepath = N'e:-digit Commercial.csv' DECLARE @bulkinsert NVARCHAR(2000) SET @bulkinsert = N'BULK INSERT ZIPCodes FROM ''' + @filepath + N''' WITH (FIRSTROW = 2, FIELDTERMINATOR = '','', ROWTERMINATOR = ''\n'')' EXEC sp_executesql @bulkinsert
このアプローチにより、一括挿入にストアド プロシージャを利用しながら、異なるファイル パスを使用する柔軟性を維持できます。
以上が可変ファイル パスを使用する場合の一括挿入ストアド プロシージャ エラーのトラブルシューティング方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。