使用預存程序批次插入資料
您已建立一個成功執行批次插入任務的查詢。但是,您現在希望將此查詢封裝在預存程序中以增強可重複使用性。不幸的是,您在嘗試這樣做時遇到了語法錯誤。
問題的癥結在於 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中文網其他相關文章!