首頁 >資料庫 >mysql教程 >如何在 T-SQL 中正確轉換變數以進行批次插入?

如何在 T-SQL 中正確轉換變數以進行批次插入?

Linda Hamilton
Linda Hamilton原創
2024-12-21 04:36:10292瀏覽

How to Correctly Cast Variables for Bulk Inserts in T-SQL?

T-SQL 中批次插入的變數轉換

在T-SQL 中,BULK INSERT 語句允許從外部資料匯入檔案存入檔案表中。但是,如果使用字串變數作為資料來源,則可能會發生錯誤。

問題:

以下 T-SQL程式碼失敗並出現錯誤(部分預存程序):

DECLARE @CSVfile nvarchar(255);
SET @CSVfile = N'T:\x.csv';
BULK INSERT [dbo].[TStagingTable]
-- FROM N'T:\x.csv' -- This line works
FROM @CSVfile -- This line fails
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n',
FIRSTROW = 2
)

錯誤訊息:

Incorrect syntax near the keyword 'with'.

原因:

在BULK INSERT 語句中,FROM 子句需要文字字串作為輸入檔路徑。使用變數時,必須將其轉換為文字字串。

解決方案:

要將變數@CSVfile 轉換為文字字串,請使用下列動態T -SQL 語法:

declare @q nvarchar(MAX);
set @q=
    'BULK INSERT [TStagingTable]
    FROM '+char(39)+@CSVfile+char(39)+'
    WITH
    (
    FIELDTERMINATOR = '','',
    ROWTERMINATOR = ''\n'',
    FIRSTROW = 1  
    )'
exec(@q)

此程式碼產生一個動態SQL 語句,將@CSVfile 轉換為FROM 子句中的文字字串,解決問題並允許批次插入成功。

以上是如何在 T-SQL 中正確轉換變數以進行批次插入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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