ホームページ >データベース >mysql チュートリアル >SQL ストアド プロシージャで BULK INSERT で変数を使用するにはどうすればよいですか?

SQL ストアド プロシージャで BULK INSERT で変数を使用するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-26 12:50:11774ブラウズ

How to Use Variables with BULK INSERT in a SQL Stored Procedure?

ストアド プロシージャを使用したデータの一括挿入

一括挿入タスクを正常に実行するクエリが作成されました。ただし、再利用性を高めるために、このクエリをストアド プロシージャ内にカプセル化したいと考えています。残念ながら、実行しようとしたときに構文エラーが発生しました。

問題の核心は、BULK INSERT コマンドがファイル名を変数として受け入れることができないことにあります。コードは構文的には正しいように見えますが、次のコード スニペットは失敗します:

DECLARE @filename VARCHAR(255)
SET @filename = 'e:-digit Commercial.csv' 

BULK INSERT ZIPCodes 
FROM @filename
WITH 

したがって、ファイル名を変数として BULK INSERT ステートメントに渡すことは現実的ではありません。代わりに、BULK INSERT ステートメントを文字列として動的に構築し、動的 ​​SQL を使用して実行できます。以下に例を示します。

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

このコードは、ファイル パスを変数 @filepath に割り当てます。次に、BULK INSERT ステートメントを文字列として構築し、変数 @bulkinsert に保存します。最後に、動的 SQL プロシージャ sp_executesql を使用して、構築されたステートメントを実行します。このアプローチにより、ファイル パスをパラメータ化し、ストアド プロシージャ内で BULK INSERT ステートメントを効果的に実行できます。

以上がSQL ストアド プロシージャで BULK INSERT で変数を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。