【问题标题】:OPENROWSET cannot find files with special characters in file nameOPENROWSET 找不到文件名中带有特殊字符的文件
【发布时间】:2018-08-29 09:39:57
【问题描述】:

我必须将文档作为一个整体导入到 SQL Server 表中。我有一个包含所有文件名的表。我遍历表并使用以下动态 SQL 加载数据。

SET @sqlUpdate = 'UPDATE [targettable] SET [ScanData]=(SELECT * FROM OPENROWSET(BULK N''' + @sourcePath + @filename + ''', SINGLE_BLOB) f) WHERE [FileName]=''' + @fileName + '''';
EXEC (@sqlUpdate);

这适用于大多数文件。但是当文件的名称中包含特殊字符(如“ä”或“š”)时,我会收到文件未找到错误。

是否有一些设置可以让 OPENROWSET 也导入这些文件?还是有其他方法可以将文件放入表中?

【问题讨论】:

  • 您尝试将适当的CODEPAGE 添加到BULK
  • 您还需要在WHERE 子句中添加N 来表示Unicode 文字:WHERE [FileName]=N''' + @fileName。这假设@sourcePath@filename 参数/变量被声明为nvarchar

标签: sql-server special-characters filenames openrowset


【解决方案1】:

问题不是OPENROWSET,而是文件名本身。很多名字都有隐形字符。巧合的是,他们也有一些明显的特殊字符,这导致我走错了路。删除不可见字符后,该语句确实起作用了。

基本上我表中的名称与文件的名称不匹配。特殊字符和空格不是问题。

【讨论】:

    猜你喜欢
    • 2013-05-17
    • 2014-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-08
    相关资源
    最近更新 更多