SQL Server导出表为XML最常用SELECT...FOR XML语句,支持RAW、AUTO、EXPLICIT、PATH四种模式,推荐PATH模式;可通过SSMS保存为.xml文件或用bcp命令行工具批量导出,注意中文编码和NULL值处理。
SQL Server 导出表为 XML 有多种实用方式,最常用的是使用 SELECT ... FOR XML 语句,配合 SQL Server Management Studio(SSMS)或命令行工具即可快速生成标准 XML。不需要额外编程,也不依赖第三方工具。
这是最灵活、最常用的方法。在查询窗口中执行带 FOR XML 子句的 SELECT 语句,结果会以 XML 格式返回。
|
元素,字段作为属性,适合简单结构SELECT * FROM Customers FOR XML RAW
SELECT c.Name, o.OrderDate FROM Customers c JOIN Orders o ON c.ID = o.CustomerID FOR XML AUTO
SELECT Name AS 'Customer/Name', Email AS 'Customer/Contact/Email' FROM Customers FOR XML PATH(''), ROOT('Customers')
SSMS 默认将 XML 结果以“网格”或“文本”形式显示,需手动设置才能完整导出为 .xml 文件。
,勾选“将结果保存为文件时包括列标题”(可选).xml 后缀文件bcp 是 SQL Server 自带的高性能命令行工具,可将查询结果直接导出为 XML 文件,无需打开 SSMS。
bcp "SELECT * FROM AdventureWorks2019.Person.Person FOR XML AUTO, TYPE, ROOT('Persons')" queryout "C:\persons.xml" -c -T -S localhost\SQLEXPRESS
-c 表示字符模式;-T 表示 Windows 身份验证;-S 指定服务器实例TYPE 关键字,否则 bcp 可能将 XML 当作普通文本处理,导致格式错乱导出 XML 时容易忽略几个关键细节,影响后续使用。
FOR XML 后加 WITH XMLNAMESPACES 或在应用层处理,否则可能乱码XSINIL(仅适用于 FOR XML EXPLICIT 和 PATH):SELECT Name, Email FROM Customers FOR XML PATH('Customer'), ROOT('Customers'), ELEMENTS XSINIL
基本上就这些。用好 FOR XML PATH + SSMS 保存,或搭配 bcp,就能满足绝大多数导出需求。不复杂但容易忽略编码和 NULL 处理,动手前确认下这两点更稳妥。