Z表中的Department字段中有 <sal,ceo,hr,pm,hr,pm,pm>7个字段----------------楼主不是用数据库的? 怎么会字段中还有字段的?
解决方案 »
- 怎么用DROP_EXISTING删除和重建索引“IX_PASSENGER_NAME”
- sql server索引问题
- 存储过程有一个INT型的输入参数,为什么输入为空的参数,还是被判断NOT NULL
- ACCESS 数据库导入 SQL SERVER 产生数据错误
- 如何使用 SQL server 2005 DDL触发同步表结构
- 如何取得每次交易的汇率?
- sql?
- 查询优化
- 有谁知道怎样在vfp中播放flash或mp3
- 高手请注意!有问题!紧急!我在使用sql server 2000 的时候。程序出错,同样的程序,在我这里不行,在别人哪里就行,请来看看,很短的程序!快快!!!
- 想在Sql Server2005中定时执行一段语句,该怎么写啊(我是初学者,高手不要笑)
- sql server 2005 下使用全文搜索函数contains报错!(好心人们,帮帮我吧)
department是字段名..就是表中某一列的名称,不好意思啊,初次用数据库
jim sal 2002-8-7 10000 1234 admin 102
ellen sal 2003-4-1 10000 2345 127.0.0.1 104
nancy ceo 1999-9-9 200000 8888 127.1.2.3 109
kel sal 2000-1-1 10000 9999 127.1.2.3 101
比如上面这个表,我想根据DSN来形成XML文件.
问题1. DSN有多少行就形成多少个XML文件.
问题2. DSN中相同的字段的形成一个XML文件,但是XML文件中是多任务的.
1:你应该形成几个XML文件?
2:各自的XML文件应该是什么样子的?
3:你是要显示成结果集还是生成正式的物理XML文件。
4:你的数据库版本2000还是2000以上?
1.应该生成3个XML文件,因为第3个第4个DSN是一样的
2.<DSN 127.1.2.3>
<task 1>
<name>nancy <qq>8888</qq></name>
</task 1>
<task 2>
<name>kel <qq>9999</qq></name>
<DSN>
3.生成正式的物理XML文件.
4.版本是MSSQL2000.
1:你要生成不同的物理文件,首先你需要写个游标或者循环便历“消除重复了的每1个DNS”。
2:根据每一次循环或者便利,生成XML结果集,在2000里有sp_xml_preparedocument和OpenXml的方法可提供操作。
3:在这个循环执行完第2步以后,使用BULK命令,把结果集生成到物理的XML文件。
jim...|..sal.....|.2002-8-7.|..10000....|..1234..|...admin.....|.102.|..test...|
ellen.|..sal.....|.2003-4-1.|..10000....|..2345..|...127.0.0.1.|.104.|..test1..|
nancy.|..ceo.....|.1999-9-9.|..200000...|..8888..|...127.1.2.3.|.109.|..test2..|
kel...|..sal.....|.2000-1-1.|..10000....|..9999..|...127.1.2.3.|.101.|..test3..|
就如上面这个表所示,DSN列有4个字段,其中有2个是一样的,形成的XML文件格式如下:
<dsn dsn="127.1.2.3">
.....<taskname name="test2">
.........<name>nancy</name>
.........<date>1999-9-9</date>
.........<qq>8888</qq>
......</taskname>
......<taskname name="test3">
.........<name>kel</name>
.........<date>2000-1-1</date>
.........<qq>9999</qq>
.......</taskname>
</dsn>
还有就是剩下DSN字段中有ADMIN和127.0.0.1再分别形成XML文件,格式和上面一样,只是XML内容就只有一个任务而已.
能给点代码参考下吗?
use tempdb
gocreate table t2
(
tid int identity(1,1),
col varchar(1000)
)
create table t1
(
Name varchar(20),
Darpment varchar(10),
Date datetime,
salary int,
QQ varchar(10),
DSN varchar(15),
ID int,
TaskName varchar(10)
)
go
insert t1 select 'jim','sal','2002-8-7',10000,'1234','admin','102','test'
union all select 'ellen','sal','2003-4-1',10000,'2345','127.0.0.1','104','test1'
union all select 'nancy','ceo','1999-9-9',200000,'8888','127.1.2.3','109','test2'
union all select 'kel','sal','2000-1-1',10000,'9999','127.1.2.3','101','test3'
goinsert t2
select distinct
'<dsn dsn="'+a.DSN+'">' + (select
TaskName as 'taskname/@name',
Name as 'taskname/name',
Date as 'taskname/date' ,
QQ as 'taskname/qq'
from t1
where DSN = a.DSN
for xml path('')) + '</dsn>' as col from t1 adeclare @s varchar(1000)
set @s = ''select @s = @s + 'exec(''xp_cmdshell ''''bcp "select col from tempdb.dbo.t2 where tid = '
+ convert(varchar(10),tid) + '" queryout "C:\result_'+convert(varchar(10),tid)+'.xml"'
+ ' -S"TIKY\SS2008" -U"sa" -P"sa" -c '''''')'
+ CHAR(10)
from t2exec(@s)
godrop table t1
godrop table t2
go
这是在2005包括以上的版本的DEMO,执行完以后会根据DSN的个数分别生成
result_1.xml,result_2.xml......2000下的难点在于怎么处理结果集生成符合需求的XML,楼主看下思路就行了。