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

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

Linda Hamilton
發布: 2024-12-21 04:36:10
原創
223 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板