An Ihrem Code für gespeicherte Prozeduren ist nichts auszusetzen - der Punkt ist:der BULK INSERT
Befehl kann keinen Dateinamen als Variable akzeptieren.
Das funktioniert:
BULK INSERT ZIPCodes
FROM 'e:\5-digit Commercial.csv'
WITH
aber das funktioniert nie - innerhalb einer gespeicherten Prozedur oder nicht:
DECLARE @filename VARCHAR(255)
SET @filename = 'e:\5-digit Commercial.csv'
BULK INSERT ZIPCodes
FROM @filename
WITH
So kann man das leider nicht machen. Sie könnten erwägen, Ihre BULK INSERT
aufzubauen Anweisung als String (mit festem Dateinamen) und dann als dynamisches SQL ausführen - aber ich sehe keine andere Lösung.
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