S kódem uložené procedury není nic špatného – jde o to:BULK INSERT
příkaz nemůže přijmout název souboru jako proměnnou.
Toto funguje:
BULK INSERT ZIPCodes
FROM 'e:\5-digit Commercial.csv'
WITH
ale to nikdy nefunguje - v rámci uloženého procesu nebo ne:
DECLARE @filename VARCHAR(255)
SET @filename = 'e:\5-digit Commercial.csv'
BULK INSERT ZIPCodes
FROM @filename
WITH
Takže takhle to bohužel udělat nemůžete. Můžete zvážit vytvoření BULK INSERT
příkaz jako řetězec (s pevným názvem souboru) a poté jej spustit jako dynamický SQL - ale ve skutečnosti nevidím žádné jiné řešení.
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