2013-11-30 3 views
1

Мне нужно импортировать 30 файлов .csv в базу данных MS SQL SERVER. Я могу использовать BULK INSERT, но из-за количества файлов, которые я хочу сделать с помощью цикла. Каждый файл имеет имя DP (1) .csv, DP (2) .csv, DP (3) .csv, ..., DP (30) .csv.Переменные в MS SQL Bulk Вставить путь строки

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

DECLARE @COUNT INT 

SET @COUNT = 1 
USE Db_Pc 

WHILE @COUNT <= 30 
    BEGIN 
     BULK INSERT acks FROM 'C:\Users\JASON SAMUELS\Documents\M-DD\DP('[email protected]+').csv' 
     WITH(FIRSTROW = 2, 
      ROWTERMINATOR = '\n', 
      FIELDTERMINATOR = ',') 

     SET @COUNT = @COUNT + 1 
    END 

ошибка кажется на первый + непосредственно перед переменной @count в строке пути. Это сообщение об ошибке, которое я получаю:

Msg 102, Level 15, State 1, Line 8 
Incorrect syntax near '+'. 
Msg 319, Level 15, State 1, Line 8 
Incorrect syntax near the keyword 'with'. If this statement is a common table expression, an xmlnamespaces clause or a change tracking context clause, the previous statement must be terminated with a semicolon. 

Как вставить переменную в строку?

+0

Это ваш путь к файлу C: \ Users \ JASON SAMUELS \ Documents \ M-DD \ DP (1) .csv или ваш путь к файлу - это что-то вроде C: \ Users \ JASON SAMUELS \ Documents \ M-DD \ DP1.csv ?? –

+0

Первый, C: \ Users \ JASON SAMUELS \ Documents \ M-DD \ DP (1) .csv –

ответ

1

Это потому, что вы соединяете int с строкой. (CONVERT?

попробовать:

BULK INSERT acks FROM 'C:\Users\JASON SAMUELS\Documents\M-DD\DP(' + CAST(@COUNT as varchar(5)) + ').csv' WITH(FIRSTROW = 2, ROWTERMINATOR = '\n', FIELDTERMINATOR = ',') 

К сожалению, я не вокруг места я могу проверить точный синтаксис.

Смежные вопросы