Массовая вставка: можно ли из FROM <filepath>быть погруженным в воду? - PullRequest
0 голосов
/ 22 сентября 2018

Я пытаюсь разработать приложение, которое может обрабатывать массовые вставки файлов в заданную таблицу.Путь к файлам может отличаться, поэтому я хотел разработать хранимый процесс, который я могу вызывать и передавать по пути.

Следующее работает хорошо

BULK INSERT [dbo].[tblUTAClockExport]
FROM '\\warhawk\C$\test\clock_export_20180922.csv'
WITH (FIELDTERMINATOR = ',' );

... но я могуне заменяйте путь параметром.Это терпит неудачу:

declare @fname as varchar(200);
set @fname = '\\warhawk\C$\test\clock_export_20180922.csv';
BULK INSERT [dbo].[tblUTAClockExport]
FROM @fname
WITH (FIELDTERMINATOR = ',' );

Любые предложения для обхода?

1 Ответ

0 голосов
/ 22 сентября 2018

Вы можете попытаться создать строку с вашей командой, а затем выполнить ее, используя EXEC:

declare @fname as varchar(200);
declare @command as varchar(max);

set @fname = '\\warhawk\C$\test\clock_export_20180922.csv';

set @command = 'BULK INSERT [dbo].[tblUTAClockExport]'
                +' FROM '+char(39)+@fname+char(39)
                +' WITH (FIELDTERMINATOR = '+char(39)+','+char(39)+' );'
EXEC(@command)
...