导出Xml文件

情殇无限 2010-08-26 01:55:51
exec master..xp_cmdShell 'bcp "select top 10 badge,name from demo..employee for xml path(''''),root(''employee'')" queryout "D:\emp.xml" -c -T'

执行完成后emp.xml内容如下
<DataBase><Employee><badge>R00001</badge><name>Hazel</name></Employee><Employee><badge>000003</badge><name>Joel</name></Employee><Employee><badge>001150</badge><name>Leung Wai Chung</name></Employee></DataBase>


看起来格式很混乱,有什么办法可以导出像下面这种规范的XML文件
<?xml version="1.0" encoding="utf-8"?>
<DataBase>
<Employee>
<badge>R00001</badge>
<name>Hazel</name>
</Employee>
<Employee>
<badge>000003</badge>
<name>Joel</name>
</Employee>
<Employee>
<badge>001150</badge>
<name>Leung Wai Chung</name>
</Employee>
</DataBase>
...全文
168 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
情殇无限 2010-08-26
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 hao1hao2hao3 的回复:]
要不要通过程序来处理?好像这里的查询到的列数和模板中的变量的个数不一样哦!查询字段顺序和模板中变量的顺序有没有要求?
[/Quote]

--emp.tmp
<Employees>
<%begindetail%>
<Employee Badge="<%insert_data_here%>">
<Name><%insert_data_here%></Name>
<Department DepID="<%insert_data_here%>">
<DepCName><%insert_data_here%></DepCName>
</Department>
<Job JobID="<%insert_data_here%>">
<JobCName><%insert_data_here%></JobCName>
</Job>
<Status><%insert_data_here%></Status>
<StartDate><%insert_data_here%></StartDate>
<LeaDate><%insert_data_here%></LeaDate>
</Employee>
<%enddetail%>
</Employees>

只要select中字段的顺序和模板中的一样就可以了,模板文件的层次可以随便嵌套,比For xml语句要方便多了。
无涯大者 2010-08-26
  • 打赏
  • 举报
回复
好贴,Up~~
hao1hao2hao3 2010-08-26
  • 打赏
  • 举报
回复
要不要通过程序来处理?好像这里的查询到的列数和模板中的变量的个数不一样哦!查询字段顺序和模板中变量的顺序有没有要求?
hao1hao2hao3 2010-08-26
  • 打赏
  • 举报
回复
收藏!!
zzz1975 2010-08-26
  • 打赏
  • 举报
回复
从发帖到自己解决就一个小时,厉害
王向飞 2010-08-26
  • 打赏
  • 举报
回复
恭喜啊
情殇无限 2010-08-26
  • 打赏
  • 举报
回复

--emp.tmp模板文件
<?xml version="1.0" encoding="utf-8"?>
<Employees>
<%begindetail%>
<Employee Badge="<%insert_data_here%>" Name="<%insert_data_here%>" DepID="<%insert_data_here%>" DepCName="<%insert_data_here%>" JobID="<%insert_data_here%>" JobCName="<%insert_data_here%>" Status="<%insert_data_here%>" StartDate="<%insert_data_here%>" LeaDate="<%insert_data_here%>" />
<%enddetail%>
</Employees>

exec sp_makewebtask @outputfile = 'D:\emp.xml',
@query = 'SELECT top 10 Badge,Name,a.DepID,b.DepCName,a.JobID,c.JobCName,Status,
convert(varchar(10),startdate,120) StartDate,
isnull(convert(varchar(10),LeaDate,120),'''') LeaDate,
a.Remark
FROM employee a,department b,job c
where a.depid=b.depid and a.jobid=c.jobid',
@templatefile = 'D:\emp.tmp',
@dbname = 'demo'

--这样就可以了

guguda2008 2010-08-26
  • 打赏
  • 举报
回复
好像没有对应的方法吧,XML本来就是传数据用的,不是表现数据用的,版式什么的都是工具里提供的功能。
王向飞 2010-08-26
  • 打赏
  • 举报
回复
exec master..xp_cmdshell 
'bcp TestDB.dbo.TB format nul -c -x -f Department-c..xml -T'

改成查询就不会了。。

http://msdn.microsoft.com/zh-cn/library/ms191516.aspx
王向飞 2010-08-26
  • 打赏
  • 举报
回复
http://www.cnblogs.com/wuming/archive/2010/01/14/1647783.html楼主看看这个
应该对你有帮助
情殇无限 2010-08-26
  • 打赏
  • 举报
回复
高手都哪去了啊??

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧