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



我需要将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:UsersJASON SAMUELSDocumentsM-DDDP('+@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.

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

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

您需要使用CAST( @COUNT as varchar(X) )(还是CONVERT?)。

尝试:

BULK INSERT acks FROM 'C:UsersJASON SAMUELSDocumentsM-DDDP(' + CAST(@COUNT as varchar(5) ) + ').csv' WITH(FIRSTROW = 2, ROWTERMINATOR = 'n', FIELDTERMINATOR = ',')

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

最新更新