MS SQL批量插入路径字符串中的变量

时间:2013-11-30 15:59:06

标签: sql sql-server csv

我需要将30个.csv文件导入MS SQL SERVER数据库。我可以使用BULK INSERT,但由于我想用循环执行它的文件数量。每个文件命名为DP(1).csv,DP(2).csv,DP(3).csv,...,DP(30).csv。

我确实编写了一个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('+@COUNT+').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.

我应该如何在字符串中插入变量?

1 个答案:

答案 0 :(得分:1)

这是因为你将一个int连接到一个字符串。

您需要使用CAST( @COUNT as varchar(X) )(或者是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 = ',')

抱歉,我不在一个可以测试确切语法的地方。