Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menghantar Pembolehubah dengan Betul untuk Sisipan Pukal dalam T-SQL?

Bagaimana untuk Menghantar Pembolehubah dengan Betul untuk Sisipan Pukal dalam T-SQL?

Linda Hamilton
Lepaskan: 2024-12-21 04:36:10
asal
220 orang telah melayarinya

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

Membolehubah Hantaran untuk Sisipan Pukal dalam T-SQL

Dalam T-SQL, pernyataan BULK INSERT membenarkan data diimport daripada luaran fail ke dalam jadual. Walau bagaimanapun, jika menggunakan pembolehubah rentetan sebagai sumber data, ralat mungkin berlaku.

Masalah:

Kod T-SQL berikut gagal dengan ralat (sebahagian daripada prosedur tersimpan):

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
)
Salin selepas log masuk

Ralat mesej:

Incorrect syntax near the keyword 'with'.
Salin selepas log masuk

Sebab:

Dalam pernyataan BULK INSERT, klausa FROM memerlukan rentetan literal sebagai laluan fail input. Apabila menggunakan pembolehubah, ia mesti dihantar ke rentetan literal.

Penyelesaian:

Untuk menghantar pembolehubah @CSVfile ke rentetan literal, gunakan T dinamik berikut -SQL syntax:

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

Kod ini menjana pernyataan SQL dinamik yang menghantar @CSVfile kepada rentetan literal dalam FROM klausa, menyelesaikan isu dan membenarkan sisipan pukal berjaya.

Atas ialah kandungan terperinci Bagaimana untuk Menghantar Pembolehubah dengan Betul untuk Sisipan Pukal dalam T-SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan