Tidak ada yang salah dengan kode prosedur tersimpan Anda - intinya adalah:BULK INSERT
perintah tidak dapat menerima nama file sebagai variabel.
Ini berhasil:
BULK INSERT ZIPCodes
FROM 'e:\5-digit Commercial.csv'
WITH
tapi ini tidak pernah berhasil - dalam proc yang tersimpan atau tidak:
DECLARE @filename VARCHAR(255)
SET @filename = 'e:\5-digit Commercial.csv'
BULK INSERT ZIPCodes
FROM @filename
WITH
Jadi Anda tidak bisa melakukannya dengan cara ini, sayangnya. Anda dapat mempertimbangkan untuk membuat BULK INSERT
pernyataan sebagai string (dengan nama file tetap) dan kemudian jalankan sebagai SQL dinamis - tetapi saya tidak benar-benar melihat solusi lain.
DECLARE @filepath nvarchar(500)
SET @filepath = N'e:\5-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