I'm trying to generate a normalized XML document out of SQL server
that reflects the data
structure of a table.
Eg. This is what I would like to get
<table name='MtFeedbac k'>
<field name="MtFeedbac kIy" type="int"/>
<field name="Title" type="varchar" size="50"/>
<field name="FirstName " type="varchar" size="50"/>
<field name="Surname" type="varchar" size="50"/>
<field name="insertedo n" type="datetime"/>
</table>
I have tried two ways of and these are the results. The 1st technique
is close
select
1 as Tag,
null as Parent,
'' as [table!1],
null as [field!2!table-name],
null as [field!2!name],
null as [field!2!type],
null as [field!2!size]
UNION ALL
select
2 as Tag,
1 as Parent,
null as [table!1],
i.TABLE_NAME as [field!2!table-name],
i.COLUMN_NAME as [field!2!name],
i.DATA_TYPE as [field!2!type],
i.CHARACTER_MAX IMUM_LENGTH as [field!2!size]
from
information_sch ema.columns i
where
table_name = 'MtFeedback'
FOR XML EXPLICIT
<table>
<field table-name="MtFeedbac k" name="MtFeedbac kIy" type="int"/>
<field table-name="MtFeedbac k" name="Title" type="varchar"
size="50"/>
<field table-name="MtFeedbac k" name="FirstName " type="varchar"
size="50"/>
<field table-name="MtFeedbac k" name="Surname" type="varchar"
size="50"/>
<field table-name="MtFeedbac k" name="insertedo n" type="datetime"/>
</table>
The 2nd technique fails totally.
select
1 as Tag,
null as Parent,
i.TABLE_NAME as [table!1!name],
null as [field!2!name],
null as [field!2!type],
null as [field!2!size]
from
information_sch ema.columns i
UNION ALL
select
2 as Tag,
1 as Parent,
null as [table!1!name],
i.COLUMN_NAME as [field!2!name],
i.DATA_TYPE as [field!2!type],
i.CHARACTER_MAX IMUM_LENGTH as [field!2!size]
from
information_sch ema.columns i
where
table_name = 'MtFeedback'
FOR XML EXPLICIT
<table name="MtFeedbac k"/>
<table name="MtFeedbac k"/>
<table name="MtFeedbac k"/>
<table name="MtFeedbac k"/>
<table name="MtFeedbac k"/>
<table name="MtFeedbac k"/>
<table name="MtFeedbac k"/>
<table name="MtFeedbac k"/>
<table name="MtFeedbac k"/>
<table name="categorie s"/>
<table name="categorie s"/>
<table name="products"/>
<table name="products"/>
<table name="products"/>
<table name="descripti ons"/>
<table name="descripti ons"/>
<table name="descripti ons"/>
<table name="syssegmen ts"/>
<table name="syssegmen ts"/>
<table name="syssegmen ts"/>
<table name="sysconstr aints"/>
<table name="sysconstr aints"/>
<table name="sysconstr aints"/>
<table name="sysconstr aints"/>
<table name="sysconstr aints"/>
<table name="sysconstr aints"/>
<table name="sysconstr aints"/>
<table name="dtpropert ies"/>
<table name="dtpropert ies"/>
<table name="dtpropert ies"/>
<table name="dtpropert ies"/>
<table name="dtpropert ies"/>
<table name="dtpropert ies"/>
<table name="dtpropert ies">
<field name="MtFeedbac kIy" type="int"/>
<field name="Title" type="varchar" size="50"/>
<field name="FirstName " type="varchar" size="50"/>
<field name="Surname" type="varchar" size="50"/>
<field name="insertedo n" type="datetime"/>
</table>
Cheers Dave
that reflects the data
structure of a table.
Eg. This is what I would like to get
<table name='MtFeedbac k'>
<field name="MtFeedbac kIy" type="int"/>
<field name="Title" type="varchar" size="50"/>
<field name="FirstName " type="varchar" size="50"/>
<field name="Surname" type="varchar" size="50"/>
<field name="insertedo n" type="datetime"/>
</table>
I have tried two ways of and these are the results. The 1st technique
is close
select
1 as Tag,
null as Parent,
'' as [table!1],
null as [field!2!table-name],
null as [field!2!name],
null as [field!2!type],
null as [field!2!size]
UNION ALL
select
2 as Tag,
1 as Parent,
null as [table!1],
i.TABLE_NAME as [field!2!table-name],
i.COLUMN_NAME as [field!2!name],
i.DATA_TYPE as [field!2!type],
i.CHARACTER_MAX IMUM_LENGTH as [field!2!size]
from
information_sch ema.columns i
where
table_name = 'MtFeedback'
FOR XML EXPLICIT
<table>
<field table-name="MtFeedbac k" name="MtFeedbac kIy" type="int"/>
<field table-name="MtFeedbac k" name="Title" type="varchar"
size="50"/>
<field table-name="MtFeedbac k" name="FirstName " type="varchar"
size="50"/>
<field table-name="MtFeedbac k" name="Surname" type="varchar"
size="50"/>
<field table-name="MtFeedbac k" name="insertedo n" type="datetime"/>
</table>
The 2nd technique fails totally.
select
1 as Tag,
null as Parent,
i.TABLE_NAME as [table!1!name],
null as [field!2!name],
null as [field!2!type],
null as [field!2!size]
from
information_sch ema.columns i
UNION ALL
select
2 as Tag,
1 as Parent,
null as [table!1!name],
i.COLUMN_NAME as [field!2!name],
i.DATA_TYPE as [field!2!type],
i.CHARACTER_MAX IMUM_LENGTH as [field!2!size]
from
information_sch ema.columns i
where
table_name = 'MtFeedback'
FOR XML EXPLICIT
<table name="MtFeedbac k"/>
<table name="MtFeedbac k"/>
<table name="MtFeedbac k"/>
<table name="MtFeedbac k"/>
<table name="MtFeedbac k"/>
<table name="MtFeedbac k"/>
<table name="MtFeedbac k"/>
<table name="MtFeedbac k"/>
<table name="MtFeedbac k"/>
<table name="categorie s"/>
<table name="categorie s"/>
<table name="products"/>
<table name="products"/>
<table name="products"/>
<table name="descripti ons"/>
<table name="descripti ons"/>
<table name="descripti ons"/>
<table name="syssegmen ts"/>
<table name="syssegmen ts"/>
<table name="syssegmen ts"/>
<table name="sysconstr aints"/>
<table name="sysconstr aints"/>
<table name="sysconstr aints"/>
<table name="sysconstr aints"/>
<table name="sysconstr aints"/>
<table name="sysconstr aints"/>
<table name="sysconstr aints"/>
<table name="dtpropert ies"/>
<table name="dtpropert ies"/>
<table name="dtpropert ies"/>
<table name="dtpropert ies"/>
<table name="dtpropert ies"/>
<table name="dtpropert ies"/>
<table name="dtpropert ies">
<field name="MtFeedbac kIy" type="int"/>
<field name="Title" type="varchar" size="50"/>
<field name="FirstName " type="varchar" size="50"/>
<field name="Surname" type="varchar" size="50"/>
<field name="insertedo n" type="datetime"/>
</table>
Cheers Dave
Comment