ホームページ > データベース > mysql チュートリアル > 可変ファイル パスを使用する場合の一括挿入ストアド プロシージャ エラーのトラブルシューティング方法

可変ファイル パスを使用する場合の一括挿入ストアド プロシージャ エラーのトラブルシューティング方法

Barbara Streisand
リリース: 2024-12-25 09:06:10
オリジナル
411 人が閲覧しました

How to Troubleshoot Bulk Insert Stored Procedure Errors When Using Variable File Paths?

ストアド プロシージャを使用した一括挿入: 一般的なエラーのトラブルシューティング

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 ステートメントを構築して実行します。 path.

動的 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート