【问题标题】:Special character when exporting SQL query results to CSV将 SQL 查询结果导出为 CSV 时的特殊字符
【发布时间】:2016-11-23 06:22:56
【问题描述】:

我使用 BCP 命令将我的 SQL 查询结果导出到 CSV 文件中。我的所有记录都已正确导出和格式化,只有一条记录末尾有特殊字符,例如B0013467?

我的 SQL 记录的值中没有这个字符。但是如何在将结果导出到 CSV 文件时对其进行了修改?我什至用记事本打开。特殊字符仍保留在导出的结果中。

请指教。我的 BCP 命令是这样的:

bcp "select * from ##OutputTable3" queryout "' + @Path + '\Temp_RawData3.csv" -S ' + @@SERVERNAME + ' -T -t , -c

谢谢!

【问题讨论】:

    标签: sql-server csv bcp


    【解决方案1】:

    使用以下代码检查特殊字符的特定列,这将为您提供字符的十六进制值。

    cast (MyColumn as varbinary(max))
    

    0x4300300030003000310036003900390033000E20

    https://en.wikipedia.org/wiki/Left-to-right_mark

    【讨论】:

    • 您好,我认为我的字段中有一些尾随空格。我刚刚通过删除空间进行了更新,现在导出很好。但是当使用 bcp -w 这将消除尾随空格。但这是覆盖我用于字段终止符的 -c 。因此,我的结果将是,分开而不是在单独的单元格中。有什么办法可以同时实现吗?
    • 空间不会显示为?。请添加cast (MyColumn as varbinary(max))的结果
    • 这是上面命令 0x4300300030003000310036003900390033000E20 的结果
    • RTRIM() 会删除这个特殊字符吗?
    • @LT268, No. declare @str nchar(1) = cast(0x0E20 as nchar(1)) select cast(rtrim(@str) as varbinary(1)) 但是你可以使用 REPLACE
    猜你喜欢
    • 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
    相关资源
    最近更新 更多