Ответ 1
Попробуйте использовать динамический SQL:
declare @sql varchar(max)
set @sql = 'BULK INSERT #mytable FROM ''' + @path + ''' WITH ...
exec (@sql)
Я пытаюсь загрузить массив в Db с использованием SQL Server 2005
Ниже приведен код.
declare @path varchar(500)
set @path = 'E:\Support\test.csv';
Create table #mytable( name varchar(max), class varchar(max), roll varchar(max) )
BULK INSERT #mytable FROM @path <-- Error line
WITH ( FIELDTERMINATOR = ',', ROWTERMINATOR = '\n' );
Go
select * from #mytable
drop table #mytable
Проблема: проблема в том, что мой путь к файлу является динамическим и исходит из переменной вместо жесткого кодирования, которое не работает Если я изменяю строку ошибки ниже, она работает
BULK INSERT #mytable FROM 'E:\Support\test.csv';
Пожалуйста, сообщите, как исправить это.
Попробуйте использовать динамический SQL:
declare @sql varchar(max)
set @sql = 'BULK INSERT #mytable FROM ''' + @path + ''' WITH ...
exec (@sql)
DECLARE @path varchar(50) = 'D:\ARQUIVOS_CARGAS\CABOS\FILE.prn'
DECLARE @SQL_BULK VARCHAR(MAX)
SET @SQL_BULK = 'BULK INSERT #TAB FROM ''' + @path + ''' WITH
(
CODEPAGE = ''ACP'',
FIRSTROW = 1,
FIELDTERMINATOR = ''tab'',
ROWTERMINATOR = ''0x0a'',
KEEPNULLS
)'
EXEC (@SQL_BULK)