Er is niets mis met uw opgeslagen procedurecode - het punt is:de BULK INSERT
commando kan een bestandsnaam niet als variabele accepteren.
Dit werkt wel:
BULK INSERT ZIPCodes
FROM 'e:\5-digit Commercial.csv'
WITH
maar dit werkt nooit - binnen een opgeslagen proces of niet:
DECLARE @filename VARCHAR(255)
SET @filename = 'e:\5-digit Commercial.csv'
BULK INSERT ZIPCodes
FROM @filename
WITH
Dus je kunt het gewoon niet op deze manier doen, helaas. U kunt overwegen uw BULK INSERT
. op te bouwen statement als een string (met een vaste bestandsnaam) en voer het dan uit als dynamische SQL - maar ik zie niet echt een andere oplossing.
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