我需要将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.
我应该如何在字符串中插入变量?
答案 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 = ',')
抱歉,我不在一个可以测试确切语法的地方。