【问题标题】:SQL BCP Export XML To UTF-8 FormatSQL BCP 将 XML 导出为 UTF-8 格式
【发布时间】:2021-08-24 13:35:28
【问题描述】:

我有一个执行存储过程并通过 BCP 将结果导出到 XML 文件的查询。该过程有效,除了 XML 文件的编码显示为 UCS-2 并且我被告知我将要导入它的系统需要它是 UTF-8。各种线程表明这应该是可能的,但我似乎找不到正确的语法。下面是我的代码...

ALTER PROCEDURE [dbo].[cli_sel_c4t_supplier_report]
                    @Consignment_id decimal(18,0),
                    @Supplier decimal(18,0),
                    @Username varchar(50)
AS
BEGIN
DECLARE             @fileName VARCHAR(50),
                    @sqlCmd VARCHAR(8000),
                    @sqlStr Varchar(8000)
SET                 @fileName = 'C:\C4T\' + CONVERT(VARCHAR(10), @Consignment_id) + CONVERT(VARCHAR(20), @Supplier) + '.xml';
SET                 @sqlStr='EXEC [Company Database].[dbo].[cli_sel_c4t_xml_data] @Consignment_id = ' + CONVERT(VARCHAR(10), @Consignment_id) + ', @Supplier = ' + CONVERT(VARCHAR(12), @Supplier) + ';';
SET                 @sqlCmd = 'bcp "' + @sqlStr + '" queryout ' + @fileName + ' -c -C65001 -T -S "SVRNAME\INSTANCE"';
EXEC                cli_ins_audit_c4t_file @Consignment_id=@Consignment_id, @Supplier_id=@Supplier, @Path=@fileName, @Username=@Username
EXEC                xp_cmdshell @sqlCmd;
END

我们将不胜感激。

谢谢

史蒂夫

【问题讨论】:

  • 您是否尝试检查实用程序reference-C { ACP |贴牌生产 |生 | code_page } 指定数据文件中数据的代码页。版本 13(SQL Server 2016 (13.x))之前的版本不支持代码页 65001(UTF-8 编码)
  • 嗨。我正在使用 SQL 2017,所以我假设支持 UTF-8。我的语法是 ' -c -C65001 -T -S "SVRNAME\INSTANCE"

标签: sql-server xml bcp


【解决方案1】:

要生成 UTF-8 而不是 UTF-16,请使用 -c 而不是 -w 参数。 bcp 中的 -c 选项按单字节导出字符。

明确指定代码页 1252 和 UTF-8:-c -C 1252

【讨论】:

  • 嗨。我没有使用 -w 参数。我试过 - C1252 但这导致代码失败
  • 应该是-C之后的空格
  • 感谢 Yitzhak,这似乎成功了
  • @steve_flynn,很高兴听到建议的解决方案对您有用。
  • @steve_flynn,如果您可以在旧帖子中添加一些其他信息:stackoverflow.com/questions/67822610/…
猜你喜欢
  • 1970-01-01
  • 2018-09-12
  • 2016-03-01
  • 1970-01-01
  • 2013-10-06
  • 2011-09-14
  • 2011-03-16
  • 2015-11-28
  • 2011-04-17
相关资源
最近更新 更多