2012-07-17 80 views
1

我將如何將表格模式轉換爲XML格式?格式如下。如何將數據庫表結構轉換爲sql server中的XML文件?

<Tables> 
    <Table> 
    <Name>courses</Name> 
    <Schema>dbo</Schema> 
    <Columns> 
     <Column> 
     <Name>id</Name> 
     <DataType>int</DataType> 
    </Column> 
    <Column> 
     <Name>page_name</Name> 
     <DataType>nvarchar</DataType> 
     <Length>50</Length> 
    </Column> 
    </Columns> 
    </Table> 
    <Table> 
    <Name>course_details</Name> 
    <Schema>dbo</Schema> 
    ..... 
    ..... 
    </Table> 
</Tables> 

我能夠分別生成列和表的結構。但我想鞏固兩者。這怎麼可能? 我的SQL腳本

爲表:

SELECT 
Distinct 
TABLE_NAME as Name, 
TABLE_SCHEMA as [Schema] 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA='dbo' 
ORDER BY TABLE_NAME ASC 
For XML PATH ('Table'), 
Root('Tables') 

爲列:

SELECT 
Column_Name as Name, 
DATA_TYPE as DataType, 
CHARACTER_MAXIMUM_LENGTH as [Length] 
FROM INFORMATION_SCHEMA.COLUMNS 
For XML PATH ('Column'), 
Root('Columns') 

回答

0

你有沒有考慮將架構成一個單一的表,然後產生XML?

2

您需要使用的TYPE參數FOR XML PATH ..
事情是這樣的:

SELECT TABLE_NAME  as name, 
     TABLE_SCHEMA as [schema], 
     (
      SELECT Column_Name as Name, 
        DATA_TYPE as DataType, 
        CHARACTER_MAXIMUM_LENGTH as [Length] 
      FROM INFORMATION_SCHEMA.COLUMNS 
      For XML PATH ('Column'),root('columns'), type 
     ) 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA='dbo' 
ORDER BY TABLE_NAME ASC 
For XML PATH ('Table'),Root('Tables') 
+0

謝謝...我想要這個。 – Amit 2012-07-18 18:37:21

3

同樣的查詢,但看起來更好:

SELECT TABLE_NAME as '@Name',   
(
    SELECT Column_Name as '@Name', 
      DATA_TYPE as '@DataType', 
      case data_type 
       when 'nvarchar' 
       then CHARACTER_MAXIMUM_LENGTH 
       when 'varchar' 
       then CHARACTER_MAXIMUM_LENGTH 
       else null 
      end as '@Length', 
      IS_NULLABLE AS '@IsNullable' 

    FROM INFORMATION_SCHEMA.COLUMNS 
    where INFORMATION_SCHEMA.COLUMNS.TABLE_NAME = 
     INFORMATION_SCHEMA.TABLES.TABLE_NAME 
    order by INFORMATION_SCHEMA.COLUMNS.ORDINAL_POSITION 
    For XML PATH ('Column'), type 
) 

FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA='dbo' 
ORDER BY TABLE_NAME ASC 
For XML PATH ('Table'),Root('Tables') 
相關問題