Z表中的Department字段中有 <sal,ceo,hr,pm,hr,pm,pm>7个字段----------------楼主不是用数据库的? 怎么会字段中还有字段的?

解决方案 »

  1.   

    哦,不好意思啊,是我没说清楚,的确没用过数据库,现在还在学.
    department是字段名..就是表中某一列的名称,不好意思啊,初次用数据库
      

  2.   

    Name            Department       Data            Salary         QQ              Dsn             ID   
    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文件中是多任务的.
      

  3.   

    虽然还是有点疑问,但是这样问你吧,就你给的数据和你的要求:
    1:你应该形成几个XML文件?
    2:各自的XML文件应该是什么样子的?
    3:你是要显示成结果集还是生成正式的物理XML文件。
    4:你的数据库版本2000还是2000以上?
      

  4.   

    根据我给的数据
    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.
      

  5.   

    由于我的环境没有2000,所以无法给你正确全部代码,但是可以给你思路和方法:
    1:你要生成不同的物理文件,首先你需要写个游标或者循环便历“消除重复了的每1个DNS”。
    2:根据每一次循环或者便利,生成XML结果集,在2000里有sp_xml_preparedocument和OpenXml的方法可提供操作。
    3:在这个循环执行完第2步以后,使用BULK命令,把结果集生成到物理的XML文件。
      

  6.   

    Name..|..Darpment|.Date.....|..salary...|..QQ....|...DSN.......|.ID..|.TaskName|
    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内容就只有一个任务而已.
    能给点代码参考下吗?
      

  7.   


    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,楼主看下思路就行了。