BULK INSERT 错误:附近有“+”的语法不正确。

3
以下代码有什么问题?
BULK INSERT test
FROM 'myfile_'+ CONVERT(VARCHAR(20), GETDATE(), 112) + '.TXT'
    WITH
    (FIRSTROW = 2,
     FIELDTERMINATOR = '~',
     ROWTERMINATOR = '\n')

错误信息:

Msg 102,级别 15,状态 1,第 3 行附近有语法错误“+”。


你应该发布你收到的错误。 - undefined
猜测一下,你试过使用完整路径吗? - undefined
嗨约翰,我知道这是一个与“+”符号有关的问题。如果我把完整路径放进去,它就能正常工作。 - undefined
1个回答

5

在批量插入语句中,您无法动态地将日期与文件名拼接在一起...

如果您想这样做,您必须使用动态 SQL 构建语句,然后执行它:

DECLARE @Sql NVARCHAR(MAX)
SET @Sql = 
'BULK INSERT test
FROM ''myfile_' + CONVERT(VARCHAR(20), GETDATE(), 112) + '.TXT''
    WITH
    (FIRSTROW = 2,
     FIELDTERMINATOR = ''~'',
     ROWTERMINATOR = ''\n'')'

EXEC(@Sql)

解决了。为什么我们要使用两个单引号来引用 \n、~ 和文件名(在 FROM 之后的短语中)? - undefined
两个单引号 '' 是在字符串中插入一个单引号的转义字符... 如果只有一个引号,它将终止字符串。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接