Выполнить команду T SQL с использованием переменных - PullRequest
0 голосов
/ 07 мая 2020

У меня есть файлы, которые мне нужны для массовой вставки на SQL сервер:

@Date char(8) = '20200429' *--this is a specific file variable*

, поэтому пути следующие:

root path: @ROOT = 'G:\app\Data\table-dump\'
filepath: @FILEPATH = @date+'\'+@Date+'-230000-file.txt'
fullpath: @FULLPATH = @ROOT + @FILEPATH

Я хочу запустить массовую вставку в таблицу с именем dbo.TableDump_IMPORT

Итак, я построил это:

DECLARE @BULKINSERT as varchar(max) 
SET @BULKINSERT= 'BULK INSERT dbo.TableDump_IMPORT FROM ' + @FULLPATH + ' WITH (    FIRSTROW = 2,   FIELDTERMINATOR = ''|'',    ROWTERMINATOR = ''0x0A'')'
EXEC @BULKINSERT

Когда я запускаю команду, я получаю эту ошибку:

The name 'BULK INSERT dbo.TableDump_IMPORT FROM G:\app\Data\table-dump\20200429\20200429-230000-file.txt WITH ( FIRSTROW = 2,   FIELDTERMINATOR = '|',  ROWTERMINATOR = '0x0A')' is not a valid identifier.

Как мне заставить его просто выполнить команду BULK INSERT?

1 Ответ

1 голос
/ 07 мая 2020

Вам необходимо заключить путь к файлу в одинарные кавычки.

SET @BULKINSERT= 'BULK INSERT dbo.TableDump_IMPORT FROM ''' + @FULLPATH + ''' WITH ( FIRSTROW = 2, FIELDTERMINATOR = ''|'', ROWTERMINATOR = ''0x0A'')' 
...