Sql server 将XML导入SQL Server表
我想将xml文件导入到平面表中。源文件的格式有点不寻常Sql server 将XML导入SQL Server表,sql-server,xml,ssis,xsd,Sql Server,Xml,Ssis,Xsd,我想将xml文件导入到平面表中。源文件的格式有点不寻常 <?xml version="1.0" encoding="utf-8"?> <db xmlns:site="http://www.google.com"> <params> <param name="parser_version" value="2"/> <param name="data_type" value="Events"/> <
<?xml version="1.0" encoding="utf-8"?>
<db xmlns:site="http://www.google.com">
<params>
<param name="parser_version" value="2"/>
<param name="data_type" value="Events"/>
<param name="created" value="2017-11-15T12:21:18"/>
<param name="program_version" value="4.5.20.1092"/>
</params>
<tables>
<table name="Events">
<fields>
<field name="UniqueID" type="Integer"/>
<field name="ID" type="AutoInc"/>
<field name="Date" type="Date"/>
<field name="Time" type="Time"/>
<field name="Code" type="Integer"/>
<field name="UserID" type="Integer"/>
<field name="UserGUID" type="String"/>
<field name="ReaderID" type="Integer"/>
<field name="Type" type="Integer"/>
<field name="Modified" type="Boolean"/>
<field name="ModifReason" type="String"/>
</fields>
<rows>
<row>
<f>3086647</f>
<f>18091842</f>
<f>2017-11-14</f>
<f>21:32:10</f>
<f>1</f>
<f>202</f>
<f>{ED53D55D-4B99-41F3-95BD-6945A989155C}</f>
<f>803</f>
<f>32</f>
<f>null</f>
<f>null</f>
</row>
...
</rows>
</table>
</tables>
3086647
18091842
2017-11-14
21:32:10
1.
202
{ED53D55D-4B99-41F3-95BD-6945A989155C}
803
32
无效的
无效的
...
我想这都是关于xsd格式的,或者我需要执行一些xml任务操作。目前在SSIS XML源(数据流任务)中,当我尝试生成xsd时,它会给我一个包含数据的“f”表,没有任何标记和字段枚举
因此,我希望有一个包含所有11列的表。我不知道这是否会对您有所帮助,但下面的
T\u SQL
方法会将XML展平为可导入的集。您必须依赖
和
元素的隐式排序,因为它们只按位置匹配
只要表的名称是唯一的,就可以使用任意数量的表和任意数量的行
DECLARE @xml XML=
N'<db xmlns:site="http://www.google.com">
<params>
<param name="parser_version" value="2" />
<param name="data_type" value="Events" />
<param name="created" value="2017-11-15T12:21:18" />
<param name="program_version" value="4.5.20.1092" />
</params>
<tables>
<table name="Events">
<fields>
<field name="UniqueID" type="Integer" />
<field name="ID" type="AutoInc" />
<field name="Date" type="Date" />
<field name="Time" type="Time" />
<field name="Code" type="Integer" />
<field name="UserID" type="Integer" />
<field name="UserGUID" type="String" />
<field name="ReaderID" type="Integer" />
<field name="Type" type="Integer" />
<field name="Modified" type="Boolean" />
<field name="ModifReason" type="String" />
</fields>
<rows>
<row>
<f>3086647</f>
<f>18091842</f>
<f>2017-11-14</f>
<f>21:32:10</f>
<f>1</f>
<f>202</f>
<f>{ED53D55D-4B99-41F3-95BD-6945A989155C}</f>
<f>803</f>
<f>32</f>
<f>null</f>
<f>null</f>
</row>
</rows>
</table>
</tables>
</db>';
结果
+-----------+-------------+-----------+----------------------------------------+
| TableName | FieldName | FieldType | Val |
+-----------+-------------+-----------+----------------------------------------+
| Events | UniqueID | Integer | 3086647 |
+-----------+-------------+-----------+----------------------------------------+
| Events | ID | AutoInc | 18091842 |
+-----------+-------------+-----------+----------------------------------------+
| Events | Date | Date | 2017-11-14 |
+-----------+-------------+-----------+----------------------------------------+
| Events | Time | Time | 21:32:10 |
+-----------+-------------+-----------+----------------------------------------+
| Events | Code | Integer | 1 |
+-----------+-------------+-----------+----------------------------------------+
| Events | UserID | Integer | 202 |
+-----------+-------------+-----------+----------------------------------------+
| Events | UserGUID | String | {ED53D55D-4B99-41F3-95BD-6945A989155C} |
+-----------+-------------+-----------+----------------------------------------+
| Events | ReaderID | Integer | 803 |
+-----------+-------------+-----------+----------------------------------------+
| Events | Type | Integer | 32 |
+-----------+-------------+-----------+----------------------------------------+
| Events | Modified | Boolean | null |
+-----------+-------------+-----------+----------------------------------------+
| Events | ModifReason | String | null |
+-----------+-------------+-----------+----------------------------------------+
包括TableInx、FieldInx、RowInx和ValueInx来分隔结果我不知道这是否会对您有所帮助,但是下面的
T\u SQL
方法会将XML展平为可导入集。您必须依赖
和
元素的隐式排序,因为它们只按位置匹配
只要表的名称是唯一的,就可以使用任意数量的表和任意数量的行
DECLARE @xml XML=
N'<db xmlns:site="http://www.google.com">
<params>
<param name="parser_version" value="2" />
<param name="data_type" value="Events" />
<param name="created" value="2017-11-15T12:21:18" />
<param name="program_version" value="4.5.20.1092" />
</params>
<tables>
<table name="Events">
<fields>
<field name="UniqueID" type="Integer" />
<field name="ID" type="AutoInc" />
<field name="Date" type="Date" />
<field name="Time" type="Time" />
<field name="Code" type="Integer" />
<field name="UserID" type="Integer" />
<field name="UserGUID" type="String" />
<field name="ReaderID" type="Integer" />
<field name="Type" type="Integer" />
<field name="Modified" type="Boolean" />
<field name="ModifReason" type="String" />
</fields>
<rows>
<row>
<f>3086647</f>
<f>18091842</f>
<f>2017-11-14</f>
<f>21:32:10</f>
<f>1</f>
<f>202</f>
<f>{ED53D55D-4B99-41F3-95BD-6945A989155C}</f>
<f>803</f>
<f>32</f>
<f>null</f>
<f>null</f>
</row>
</rows>
</table>
</tables>
</db>';
结果
+-----------+-------------+-----------+----------------------------------------+
| TableName | FieldName | FieldType | Val |
+-----------+-------------+-----------+----------------------------------------+
| Events | UniqueID | Integer | 3086647 |
+-----------+-------------+-----------+----------------------------------------+
| Events | ID | AutoInc | 18091842 |
+-----------+-------------+-----------+----------------------------------------+
| Events | Date | Date | 2017-11-14 |
+-----------+-------------+-----------+----------------------------------------+
| Events | Time | Time | 21:32:10 |
+-----------+-------------+-----------+----------------------------------------+
| Events | Code | Integer | 1 |
+-----------+-------------+-----------+----------------------------------------+
| Events | UserID | Integer | 202 |
+-----------+-------------+-----------+----------------------------------------+
| Events | UserGUID | String | {ED53D55D-4B99-41F3-95BD-6945A989155C} |
+-----------+-------------+-----------+----------------------------------------+
| Events | ReaderID | Integer | 803 |
+-----------+-------------+-----------+----------------------------------------+
| Events | Type | Integer | 32 |
+-----------+-------------+-----------+----------------------------------------+
| Events | Modified | Boolean | null |
+-----------+-------------+-----------+----------------------------------------+
| Events | ModifReason | String | null |
+-----------+-------------+-----------+----------------------------------------+
包括TableInx、FieldInx、RowInx和ValueInx以分离结果请不要发布图片!编辑您的问题并提供一个(简化但有效的)XML作为可复制粘贴文本。此XML来自何处?@Shnugo图片很抱歉,已更正请不要发布图片!编辑您的问题并提供一个(简化但有效的)XML作为可复制粘贴文本。这个XML来自哪里?@Shnugo图片很抱歉,更正