【发布时间】: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