首頁 >資料庫 >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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn