【问题标题】:BULK INSERT Error: Incorrect syntax near '+'批量插入错误:“+”附近的语法不正确
【发布时间】:2012-08-04 03:33:40
【问题描述】:

以下代码有什么问题?

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

错误信息:

消息 102,级别 15,状态 1,第 3 行 '+' 附近的语法不正确。

【问题讨论】:

  • 你应该发布你收到的错误。
  • 只是猜测,但您是否尝试过使用完整路径?
  • 嗨,约翰,我知道这是“+”号的问题。如果我将完整路径放入,则可以使用

标签: sql sql-server tsql bulkinsert


【解决方案1】:

您不能在批量插入语句中将日期动态连接到文件名...

如果你想这样做,你必须使用动态 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 之后)?
  • 两个单引号 '' 是在字符串中放置单引号的转义字符...如果它只是一个引号,它将终止字符串。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多