SQL查询结果导出XML文件简单的方法

注:此方法仅支持SQL2005

最近需要把数据导成XML,不想通过编程实现,手工使用导入导出工具又觉得麻烦,想想还是写SQL语句运行的好,以后扩展也方便,但Microsoft好像并没有提供什么SQL语句可以直接导出方法,用bcp导出的都是文本、EXCEL或其他什么的,本来以为可以把查询结果通过bcp导出文本的形式,但经过N次试验,导出的XML不知道为什么都会自动换行,一打开就会报错,百思不得其解,而且导出的XML没有一个<Root>,这也是个麻烦事。
最关键的就是这两个问题:1.如何使用XML不自动换行;2.如何增加一个<Root>标签;
查看了N篇与其相关的联机帮助,一个xml的数据类型提醒了我,觉得可以把查询结果做为一个变量存储后再导出,通过连接一个视图来增加<Root>标签,以下是样例代码:

USE Test
--创建一个表
CREATE TABLE Test_blan (x varchar(100), y varchar(100))
--插入数据
INSERT INTO  Test_blan  VALUES(...略...)
--创建一个视图用于增加<Root>标签
CREATE VIEW  AS SELECT 'root'  l
--创建一个表用于存储生成的XML结果
CREATE TABLE TT (aa xml)
--定义一个XML的变量
DECLARE @x xml
--查询生成XML结果并存储到TT表中
SET @x=( SELECT IRoot.l, IDate.x,IData.y FROM Test..Test_Log IRoot, Test..Test_blan IData FOR XML AUTO)
INSERT TT VALUES(@x)
--通过bcp将TT中的XML结果输出
EXEC master..xp_cmdshell 'bcp Test..TT out e:/123.xml -c -T -k'
--删除表及视图
DROP TABLE TT
DROP VIEW Test_Log

这样导出的XML就是个完整的文件了

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值