Ошибка чтения файла CSV - PullRequest
0 голосов
/ 05 апреля 2011

Я использую приведенный ниже код в SP, SQL Server 2005

declare @path varchar(500)
set @path = 'E:\Support\test.csv';
print @path
 Create table #mytable( 
name varchar(max), class varchar(max), roll varchar(max)
)

BULK INSERT #mytable FROM @path 
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
);
Go
select * from #mytable

drop table #mytable

Но выдает следующую ошибку:

Msg 102, Level 15, State 1, Line 8
Incorrect syntax near '@path'.
Msg 319, Level 15, State 1, Line 9
Incorrect syntax near the keyword 'with'. 
If this statement is a common table expression or an xmlnamespaces clause, 
the previous statement must be terminated with a semicolon.
Msg 208, Level 16, State 0, Line 1
Invalid object name '#mytable'.

Может ли кто-нибудь мне помочь.

1 Ответ

0 голосов
/ 05 апреля 2011

Вы не можете сделать следующее

BULK INSERT #mytable FROM @path 

, если вы ожидаете, что это перевести на

BULK INSERT #mytable FROM 'E:\Support\test.csv'

Это не имя файла в varchar, SQL видит его @Path как данные , а не строку, содержащую путь.

Если вам нужно использовать переменную для пути, вам нужно будет использовать некоторый динамический SQL, который примерно соответствует (извините за синтаксические ошибки)

DECLARE @SQL varchar(max)
SET @SQL = 'BULK INSERT #mytable FROM '+ @path + ' 
--Add the rest of your code here

EXEC (@SQL)

Если ваша переменная никогда не изменится, хотя я бы просто добавил строку в сам оператор.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...