2014-09-22 2 views
0

Как я могу создать ниже xml-файл с сервера sql?Как создать файл txt в xml с использованием Sql-сервера?

<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> 

Здесь я хочу, чтобы создать базу данных, где все данные таблицы будут сохранять в текстовом файле, а количество строк будет меняться каждый раз.

ответ

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') 
+0

Но это не будет создавать имя файла, в котором все данные будут экономить! – SaNa3819

+0

обновил запрос, чтобы указать имя файла и количество строк. – radar

+0

есть проблема, когда он выполняется в таблице учеников, он также показывает весь столбец, включая таблицу учителей. например: '<Имя таблицы = "Студент"> <Имя столбца = "Название" ТипДанная = "NVARCHAR" Длина = "50"/> <Имя столбец = "Отдел" ТипДанная = "NVARCHAR" Длина = "30" /> <Название столбца = "Телефон" DataType = "nvarchar" Длина = "20" /> <Название столбца = "TID" DataType = "ANSI INTEGER" IsPrimaryKey = "true" /> < Название столбца = «Тенег» DataType = «ANSI CHARACTER VARYING» Длина = «50» /> ' , но он должен показывать только соответствующий столбец конкретной таблицы. – SaNa3819

Смежные вопросы