sql - 如何使用一个 sql 查询将任何数据库结构转换为 xml?

标签 sql sql-server xml sql-server-2008 c#-4.0

请任何人知道如何将我的数据库结构作为 xml

我有数据库:exdb
我有表:extbl1
我有专栏:excol1
我有专栏:excol2
我有专栏:excol3
& 有专栏:excol4
....等等

我怎样才能得到下面的结构

<DataBase DataBaseName="exdb">

 <Table TableName="extbl1">
  <Column ColumnName="excol1"/>
  <Column ColumnName="excol2"/>
  <Column ColumnName="excol3"/>
  <Column ColumnName="excol4"/>
 </Table>

 <Table TableName="extb2">
  <Column ColumnName="excol1"/>
  <Column ColumnName="excol2"/>
  <Column ColumnName="excol3"/>
  <Column ColumnName="excol4"/>
 </Table>

</DataBase>

最佳答案

使用 for xml 和子查询非常简单:

select 
'exdb' [@DataBaseName],

(select t.table_name [@TableName],

 (select c.COLUMN_NAME [@ColumnName] 
    from INFORMATION_SCHEMA.COLUMNS c
    where c.TABLE_NAME = t.TABLE_NAME
  for xml path('Column'), type)

 from INFORMATION_SCHEMA.TABLES t
for xml path('Table'), type)

for xml path('DataBase')

关于sql - 如何使用一个 sql 查询将任何数据库结构转换为 xml?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22081566/

相关文章:

java - 安卓 "Cannot resolve symbol ' @id/myLabel"

sql - 在 SQL Server 2008 中合并两个表

sql - 确保两列仅包含来自同一子查询的有效结果

sql-server - SQL Azure 引发 40197 错误(级别 20,状态 4,代码 9002)

c# - sql server中c#float的等效数据类型是什么

javascript - 如何使用 MSSQL 查询结果作为我的选择框选项

php - laravel 无法提交表单数据

sql - 如何合并 BigQuery 中多行的 NULL?

php - 使用 SimpleXML foreach 循环进行迭代 - 导入矩阵

xml - 获取没有特定祖先 xml xpath 的节点