如您所知,微软终于在其 SQL Server 2016 中支持 UTF-8。我想知道如何从一个没有 BOM 的存储过程中创建一个 UTF-8 编码的 XML 文件。
在 SQL Server 2016 的技术概述中,它说:
“支持导入和导出 UTF-8 数据。现在可以使用 BULK INSERT T-SQL 命令和 bcp 命令行实用程序将存储在 UTF-8 编码文件中的数据导入到 SQL Server 中,并从 SQL Server 导出到 UTF-8 编码文件中。作为导入过程的一部分,从文件中读取 UTF-8 编码字符串,并将其转换并存储为与 SQL Server 表中目标列对应的本地数据类型。作为导出过程的一部分,将数据从本地数据类型转换为 UTF-8 编码字符串,并写入文件。除了 Xml、SqlVariant、Text、NText 和 Image 外,所有本地数据类型都受支持。”
据我理解,我现在可以使用以下命令创建一个 UTF-8 文件:
在 SQL Server 2016 的技术概述中,它说:
“支持导入和导出 UTF-8 数据。现在可以使用 BULK INSERT T-SQL 命令和 bcp 命令行实用程序将存储在 UTF-8 编码文件中的数据导入到 SQL Server 中,并从 SQL Server 导出到 UTF-8 编码文件中。作为导入过程的一部分,从文件中读取 UTF-8 编码字符串,并将其转换并存储为与 SQL Server 表中目标列对应的本地数据类型。作为导出过程的一部分,将数据从本地数据类型转换为 UTF-8 编码字符串,并写入文件。除了 Xml、SqlVariant、Text、NText 和 Image 外,所有本地数据类型都受支持。”
据我理解,我现在可以使用以下命令创建一个 UTF-8 文件:
declare @command varchar(8000)
set @command = 'bcp "select * from Table" queryout
"{path}" -T -t; -c -C65001'
exec xp_cmdshell @command
但我不知道如何从“FOR XML”查询中创建文件。而且我也不知道生成的文件是否带有BOM。
在谷歌上搜寻了半个小时后,我找不到任何答案,所以现在想在这里找到一个答案。
谢谢!
bcp
并不是一个导出工具。管理员通常会从命令行中使用它。在存储过程内调用它是一个严重的问题,因为它需要提升权限。只需使用适当的工具来完成这项工作 - SSIS。 - Panagiotis KanavosBULK INSERT
或BCP用于此目的。所有都提到了导出向导,这是SSIS的前端。 SSIS在文档中有一个完整的部分。你想做什么??? - Panagiotis Kanavos