Существует альтернатива динамическому SQL, если у вас есть доступ к SQLCmd exe.
Утилита SqlCmd позволяет передавать переменные для замены строк с помощью аргумента -v.
Вы можете использовать переменную шаблона с именем "filepath", которая будет заменена при выполнении сценария с помощью cmdline.
Сценарий SQL будет выглядеть так:
BULK INSERT ZIPCodes
FROM '$(filepath)'
WITH
(
FIRSTROW = 2 ,
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
end
Затем вы выполняете скрипт из командной строки, используя что-то вроде следующего:
sqlcmd -b -S SERVER\INSTANCEHERE -E -i "PATH\FILENAMEHERE.Sql" -v FilePath = "e:\5-digit Commercial.csv" -s "|"
Важной частью примера является аргумент -v:
-v FilePath = "e:\5-digit Commercial.csv"