【问题标题】:How to extract database schema to xml content?如何将数据库模式提取到 xml 内容?
【发布时间】:2019-01-28 19:03:03
【问题描述】:

我需要将数据库模式提取为 xml 内容。

有没有开源工具或库可以进行模式提取操作?

是否有任何程序可用于将 DB 模式生成到 xml 内容?

例子:

create table sample(id numeric(5) primary key)

<Tables>
  <Table Name="sample" Type="Table">
    <Column Name="id" DataType="numeric" IsNullable="NO" IsIdentity="0" Constraint="PRIMARY KEY" />
  </Table>
</Tables>

对于答案中提到的以下查询,我需要做同样的事情 实现索引,程序....

【问题讨论】:

  • 工具推荐是题外话。
  • 或者是否有任何程序可用于将 DB 模式生成到 xml 内容? @Erwin Smout
  • 是的。阅读目录,编写 XML。
  • 重点是:适用于该特定[部分]问题的批评是它“过于宽泛”。您甚至没有指定您的数据库是由 SQL 还是其他方式管理。您还没有指定您想要的 XML 结构(即没有 .xsd)。

标签: xml database schema


【解决方案1】:
SELECT TABLE_NAME AS '@Name', CASE WHEN TABLE_TYPE = 'BASE TABLE' THEN 'Table' ELSE 'View' END AS '@Type',
(
    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',
            COLUMNPROPERTY(OBJECT_ID(TABLE_NAME), COLUMN_NAME, 'IsIdentity') AS '@IsIdentity',

(SELECT tc.CONSTRAINT_TYPE FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE cu ON tc.CONSTRAINT_NAME = cu.CONSTRAINT_NAME
WHERE tc.TABLE_NAME = INFORMATION_SCHEMA.COLUMNS.TABLE_NAME AND cu.COLUMN_NAME = INFORMATION_SCHEMA.COLUMNS.Column_Name) AS '@Constraint'
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')

【讨论】:

  • 我对基于 DB 模式生成 xml 内容的怀疑。它会将架构显示为 xml 内容吗?我收到错误
  • 您能具体说明您遇到了什么错误吗?是的,这将生成 DB 模式的 XML 内容
  • Msg 512, Level 16, State 1, Line 1 子查询返回超过 1 个值。当子查询跟随 =、!=、、>= 或子查询用作表达式时,这是不允许的。我得到这个错误
  • 如果数据库只包含表,它将生成为 xml
  • 我们将如何处理索引和过程也是如此?
猜你喜欢
  • 2019-11-12
  • 2012-02-12
  • 1970-01-01
  • 2015-12-22
  • 1970-01-01
  • 2018-05-03
  • 1970-01-01
  • 2011-01-13
  • 1970-01-01
相关资源
最近更新 更多