如何使用Sql server在xml中创建txt文件?

时间:2014-09-22 04:56:58

标签: sql xml sql-server-2008-r2

如何从sql server创建以下xml文件?

<Database>
<Tables>
<Table Name="Student"> <Files> <File FileName="Student_Info.txt" NumberOfRows="44" /> </Files>
<Columns>  
<Column Name="Name" DataType="nvarchar" Length="50" /> 
<Column Name="Department" DataType="nvarchar" Length="30" /> 
 <Column Name="Phone" DataType="nvarchar" Length="20" /> 
</Columns>  </Table> 
<Table Name="Teacher">
<Files>
<File FileName="Teacher.txt" NumberOfRows="33"  />
</Files>
<Columns>
<Column Name="TID" DataType="ANSI INTEGER" IsPrimaryKey="true" />
<Column Name="TName" DataType="ANSI CHARACTER VARYING" Length="50" />
</Columns>
</Table>
</Database>

这里我想创建一个数据库,其中所有表数据将保存在txt文件中,行数将每次都改变。

1 个答案:

答案 0 :(得分:0)

此查询将为您提供当前数据库格式输出,就像您拥有的那样

select 
(
    select TABLE_NAME as '@Name' ,
        ( select COLUMN_NAME as '@Name',
               Data_type as '@DataType',
               character_octet_length as '@Length'
        FROM information_schema.COLUMNS C
        WHERE IT.TABLE_NAME =   C.TABLE_NAME
        FOR XML PATH ('Column'), TYPE
        ),
        (select 
            (  SELECT distinct  
                d.physical_name as '@FileName',
                i.rowcnt as '@NumberofRows'
                FROM    sys.sysindexes i,
                sys.filegroups f,
                sys.database_files d,
                sys.data_spaces s
                WHERE   OBJECTPROPERTY(i.id, 'IsUserTable') = 1
                AND f.data_space_id = i.groupid
                AND f.data_space_id = d.data_space_id
                AND f.data_space_id = s.data_space_id  
                AND IT.TABLE_NAME =   OBJECT_NAME(i.id) 
                FOR XML  path  ('File'), Type
            ) 
        FOR XML PATH ('Files'), Type
        )
from INFORMATION_SCHEMA.TABLES IT
for xml path ('Table'), TYPE
)
for xml path ('Databases')