Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 将XML导入SQL Server表_Sql Server_Xml_Ssis_Xsd - Fatal编程技术网

Sql server 将XML导入SQL Server表

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文件导入到平面表中。源文件的格式有点不寻常

<?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图片很抱歉,更正