1. <tfoot id='dyp5T'></tfoot>

      <i id='dyp5T'><tr id='dyp5T'><dt id='dyp5T'><q id='dyp5T'><span id='dyp5T'><b id='dyp5T'><form id='dyp5T'><ins id='dyp5T'></ins><ul id='dyp5T'></ul><sub id='dyp5T'></sub></form><legend id='dyp5T'></legend><bdo id='dyp5T'><pre id='dyp5T'><center id='dyp5T'></center></pre></bdo></b><th id='dyp5T'></th></span></q></dt></tr></i><div id='dyp5T'><tfoot id='dyp5T'></tfoot><dl id='dyp5T'><fieldset id='dyp5T'></fieldset></dl></div>
      <legend id='dyp5T'><style id='dyp5T'><dir id='dyp5T'><q id='dyp5T'></q></dir></style></legend>

      1. <small id='dyp5T'></small><noframes id='dyp5T'>

          <bdo id='dyp5T'></bdo><ul id='dyp5T'></ul>

        如何将 XML 文件及其列名导入 SQL 表?

        时间:2023-06-07
          • <bdo id='JA4eC'></bdo><ul id='JA4eC'></ul>

              <i id='JA4eC'><tr id='JA4eC'><dt id='JA4eC'><q id='JA4eC'><span id='JA4eC'><b id='JA4eC'><form id='JA4eC'><ins id='JA4eC'></ins><ul id='JA4eC'></ul><sub id='JA4eC'></sub></form><legend id='JA4eC'></legend><bdo id='JA4eC'><pre id='JA4eC'><center id='JA4eC'></center></pre></bdo></b><th id='JA4eC'></th></span></q></dt></tr></i><div id='JA4eC'><tfoot id='JA4eC'></tfoot><dl id='JA4eC'><fieldset id='JA4eC'></fieldset></dl></div>

              <tfoot id='JA4eC'></tfoot>
                • <legend id='JA4eC'><style id='JA4eC'><dir id='JA4eC'><q id='JA4eC'></q></dir></style></legend>
                    <tbody id='JA4eC'></tbody>

                  <small id='JA4eC'></small><noframes id='JA4eC'>

                  本文介绍了如何将 XML 文件及其列名导入 SQL 表?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  限时送ChatGPT账号..

                  我有 12 个 XML 文件,我必须在 SQL Server 的单个表中导入它们,其中一个在下面,请帮我将这些文件放入带有列名的表格式中.

                  I have 12 XML files which I have to import in single Table in SQL Server, one of it is below, Please help me to put those files in a Table format with their column names.

                  <?xml version="1.0" encoding="UTF-16"?>
                  <Data>
                  <!-- IntelliScan - USC  -->
                  <BatchNumber>1</BatchNumber>
                  <ComputerName>PC-XDS1</ComputerName>
                  <StartTime>2/16/2016 7:44:38 AM</StartTime>
                  <EndTime>2/16/2016 8:14:47 AM</EndTime>
                  <IdleTime>672</IdleTime>
                  <ImagesDroppedFront>0</ImagesDroppedFront>
                  <ImagesDroppedBack>205</ImagesDroppedBack>
                  <JobName>Landscape Production NO MONEY</JobName>
                  <JobNumber>001</JobNumber>
                  <Operator>abwhite</Operator>
                  <OutputFolderName>6604773004001</OutputFolderName>
                  <PagesOperatorReplaced>2</PagesOperatorReplaced>
                  <PagesOperatorDeleted>1</PagesOperatorDeleted>
                  <PagesOperatorInserted>0</PagesOperatorInserted>
                  <ProcessingDate>2/16/2016</ProcessingDate>
                  <ProfileName> Multis Landscape</ProfileName>
                  <RecoveredTime></RecoveredTime>
                  <Status></Status>
                  <SystemDate>2/16/2016</SystemDate>
                  <TotalItems>318</TotalItems>
                  <TotalLevel1>0</TotalLevel1>
                  <TotalLevel2>64</TotalLevel2>
                  <TotalLevel3>0</TotalLevel3>
                  <TotalImages>506</TotalImages>
                  <TotalFrontIJP>321</TotalFrontIJP>
                  <TotalBackIJP>0</TotalBackIJP>
                  <TotalPostIJP>0</TotalPostIJP>
                  <TransportType>DocuScan</TransportType>
                  <TotalAutoFeed>298</TotalAutoFeed>
                  <TotalManualFeed>23</TotalManualFeed>
                  <TotalFeedOnTime>0</TotalFeedOnTime>
                  <TotalSpeed1>0</TotalSpeed1>
                  <TotalSpeed2>0</TotalSpeed2>
                  <TotalSpeed3>321</TotalSpeed3>
                  <XPTNumber>73</XPTNumber>
                  <IR_Marked>0</IR_Marked>
                  <IR_Reviewed>39</IR_Reviewed>
                  <Start_DLN>6604773004001</Start_DLN>
                  <End_DLN>6604773004061</End_DLN>
                  <DocTypes>
                  <Doctype ID="400">
                  <!-- [ DocType400 ]  - DOCSEP -->
                  <Name>DOCSEP</Name>
                  <Count>64</Count>
                  </Doctype>
                  <Doctype ID="001">
                  <!-- [ DocType001 ]  - Page -->
                  <Name>Page</Name>
                  <Count>254</Count>
                  </Doctype>
                  </DocTypes>
                  <Jams>
                  <Jam>
                  <Message>5.10 Document Late To MultiPocket STK1 PKT1 Entrance Sensor</Message>
                  <Count>3</Count>
                  <Time>206</Time>
                  </Jam>
                  <Jam>
                  <Message>1.6 Document Late to PostScan IJP Entrance sensor.</Message>
                  <Count>2</Count>
                  <Time>13</Time>
                  </Jam>
                  <Jam>
                  <Message>1.4 Document Late to Reader On Doc sensor.</Message>
                  <Count>3</Count>
                  <Time>18</Time>
                  </Jam>
                  <Jam>
                  <Message>0.125 Double feed detected. Document held at the handfeed track</Message>
                  <Count>1</Count>
                  <Time>16</Time>
                  </Jam>
                  <Jam>
                  <Message>1.5 Document Late to PreScan IJP Entrance sensor.</Message>
                  <Count>1</Count>
                  <Time>3</Time>
                  </Jam>
                  <Jam>
                  <Message>3.2 Unexpected Item Detected at Dbl Feed exit sensor.</Message>
                  <Count>1</Count>
                  <Time>43</Time>
                  </Jam>
                  </Jams>
                  </Data>
                  

                  我已经在运行一个查询,但问题是,在 Data/DoctTypes 中有多个 ID,在 Data/Jams/Jam 中有多个 Message、Count、time 列.我已经在表名 XMLFiles 和列名 XMLData 中加载了 xml 文件,现在需要从 xml 文件中检索 xml 文件中的列,并在单个表中使用它们的值.那么如何检索这些多列或数据呢?我的查询如下,

                  I am already running one query but the problem is that, In Data/DoctTypes there are multiple ID and in Data/Jams/Jam there are multiple Message,Count,time columns. I have already loaded xml files in table name XMLFiles and column name XMLData and now need to retrieve the columns inside xml files from xml files with their values in a single table. So how can I retrieve those multiple Columns or data? My query is below,

                  Select  XMLData.value('(/Data/BatchNumber)[1]','int' ) BatchNumber,
                      XMLData.value('(/Data/ComputerName)[1]','varchar(50)' ) ComputerName,
                      XMLData.value('(/Data/StartTime)[1]','DateTime' ) StartTime,
                      XMLData.value('(/Data/EndTime)[1]','DateTime' ) EndTime,
                      XMLData.value('(/Data/IdleTime)[1]','int' ) IdleTime,
                      XMLData.value('(/Data/ImagesDroppedFront)[1]','int' ) ImagesDroppedFront,
                      XMLData.value('(/Data/ImagesDroppedBack)[1]','int' ) ImagesDroppedBack,
                      XMLData.value('(/Data/JobName)[1]','varchar(100)' ) JobName,
                      XMLData.value('(/Data/JobNumber)[1]','varchar(10)' ) JobNumber,
                      XMLData.value('(/Data/Operator)[1]','varchar(50)' ) Operator,
                      XMLData.value('(/Data/OutputFolderName)[1]','varchar(20)' ) OutputFolderName,
                      XMLData.value('(/Data/PagesOperatorReplaced)[1]','int' ) PagesOperatorReplaced,
                      XMLData.value('(/Data/PagesOperatorDeleted)[1]','int' ) PagesOperatorDeleted,
                      XMLData.value('(/Data/PagesOperatorInserted)[1]','int' ) PagesOperatorInserted,
                      XMLData.value('(/Data/ProcessingDate)[1]','Date' ) ProcessingDate,
                      XMLData.value('(/Data/ProfileName)[1]','varchar(50)' ) ProfileName,
                      XMLData.value('(/Data/RecoveredTime)[1]','Time' ) RecoveredTime,
                      XMLData.value('(/Data/Status)[1]','varchar(50)' ) [Status],
                      XMLData.value('(/Data/SystemDate)[1]','Date' ) SystemDate,
                      XMLData.value('(/Data/TotalItems)[1]','int' ) TotalItems,
                      XMLData.value('(/Data/TotalLevel1)[1]','int' ) TotalLevel1,
                      XMLData.value('(/Data/TotalLevel2)[1]','int' ) TotalLevel2,
                      XMLData.value('(/Data/TotalLevel3)[1]','int' ) TotalLevel3,
                      XMLData.value('(/Data/TotalImages)[1]','int' ) TotalImages,
                      XMLData.value('(/Data/TotalFrontIJP)[1]','int' ) TotalFrontIJP,
                      XMLData.value('(/Data/TotalBackIJP)[1]','int' ) TotalBackIJP,
                      XMLData.value('(/Data/TotalPostIJP)[1]','int' ) TotalPostIJP,
                      XMLData.value('(/Data/TransportType)[1]','varchar(50)' ) TransportType,
                      XMLData.value('(/Data/TotalAutoFeed)[1]','int' ) TotalAutoFeed,
                      XMLData.value('(/Data/TotalManualFeed)[1]','int' ) TotalManualFeed,
                      XMLData.value('(/Data/TotalFeedOnTime)[1]','int' ) TotalFeedOnTime,
                      XMLData.value('(/Data/TotalSpeed1)[1]','int' ) TotalSpeed1,
                      XMLData.value('(/Data/TotalSpeed2)[1]','int' ) TotalSpeed2,
                      XMLData.value('(/Data/TotalSpeed3)[1]','int' ) TotalSpeed3,
                      XMLData.value('(/Data/XPTNumber)[1]','int' ) XPTNumber,
                      XMLData.value('(/Data/IR_Marked)[1]','int' ) IR_Marked,
                      XMLData.value('(/Data/IR_Reviewed)[1]','int' ) IR_Reviewed,
                      ISNULL(XMLData.value('(/Data/Start_DLN)[1]','varchar(20)'),'' ) Start_DLN,
                      ISNULL(XMLData.value('(/Data/End_DLN)[1]','varchar(20)'),'' ) End_DLN,
                      XMLData.value('(/Data/DocTypes/Doctype/@ID)[1]','int') ID,
                      XMLData.value('(/Data/DocTypes/Doctype/Name)[1]','varchar(50)' ) Name,
                      XMLData.value('(/Data/DocTypes/Doctype/Count)[1]','int' ) [Count],
                      ISNULL(XMLData.value('(/Data/Jams/Jam/Message)[1]','varchar(1000)'),'') [Message],
                      ISNULL(XMLData.value('(/Data/Jams/Jam/Count)[1]','int' ),'') [Count],
                      ISNULL(XMLData.value('(/Data/Jams/Jam/Time)[1]','int' ),'') [Time]
                      From XMLFiles X
                  

                  推荐答案

                  您的 XML 具有 1:n 关系的嵌套数据.要将其放入正确设计的数据结构中,需要单独的表.

                  Your XML has nested data with 1:n relation. To put this in properly designed data structures needs separate tables.

                  使用此代码,您将获得三个带有生成 ID 的派生表来定义它们的关系:

                  With this code you would get three derived tables with generated IDs to define their relation:

                  DECLARE @x XML=
                  N'<Data>
                    <!-- IntelliScan - USC  -->
                    <BatchNumber>1</BatchNumber>
                    <ComputerName>PC-XDS1</ComputerName>
                    <StartTime>2/16/2016 7:44:38 AM</StartTime>
                    <EndTime>2/16/2016 8:14:47 AM</EndTime>
                    <IdleTime>672</IdleTime>
                    <ImagesDroppedFront>0</ImagesDroppedFront>
                    <ImagesDroppedBack>205</ImagesDroppedBack>
                    <JobName>Landscape Production NO MONEY</JobName>
                    <JobNumber>001</JobNumber>
                    <Operator>abwhite</Operator>
                    <OutputFolderName>6604773004001</OutputFolderName>
                    <PagesOperatorReplaced>2</PagesOperatorReplaced>
                    <PagesOperatorDeleted>1</PagesOperatorDeleted>
                    <PagesOperatorInserted>0</PagesOperatorInserted>
                    <ProcessingDate>2/16/2016</ProcessingDate>
                    <ProfileName> Multis Landscape</ProfileName>
                    <RecoveredTime />
                    <Status />
                    <SystemDate>2/16/2016</SystemDate>
                    <TotalItems>318</TotalItems>
                    <TotalLevel1>0</TotalLevel1>
                    <TotalLevel2>64</TotalLevel2>
                    <TotalLevel3>0</TotalLevel3>
                    <TotalImages>506</TotalImages>
                    <TotalFrontIJP>321</TotalFrontIJP>
                    <TotalBackIJP>0</TotalBackIJP>
                    <TotalPostIJP>0</TotalPostIJP>
                    <TransportType>DocuScan</TransportType>
                    <TotalAutoFeed>298</TotalAutoFeed>
                    <TotalManualFeed>23</TotalManualFeed>
                    <TotalFeedOnTime>0</TotalFeedOnTime>
                    <TotalSpeed1>0</TotalSpeed1>
                    <TotalSpeed2>0</TotalSpeed2>
                    <TotalSpeed3>321</TotalSpeed3>
                    <XPTNumber>73</XPTNumber>
                    <IR_Marked>0</IR_Marked>
                    <IR_Reviewed>39</IR_Reviewed>
                    <Start_DLN>6604773004001</Start_DLN>
                    <End_DLN>6604773004061</End_DLN>
                    <DocTypes>
                      <Doctype ID="400">
                        <!-- [ DocType400 ]  - DOCSEP -->
                        <Name>DOCSEP</Name>
                        <Count>64</Count>
                      </Doctype>
                      <Doctype ID="001">
                        <!-- [ DocType001 ]  - Page -->
                        <Name>Page</Name>
                        <Count>254</Count>
                      </Doctype>
                    </DocTypes>
                    <Jams>
                      <Jam>
                        <Message>5.10 Document Late To MultiPocket STK1 PKT1 Entrance Sensor</Message>
                        <Count>3</Count>
                        <Time>206</Time>
                      </Jam>
                      <Jam>
                        <Message>1.6 Document Late to PostScan IJP Entrance sensor.</Message>
                        <Count>2</Count>
                        <Time>13</Time>
                      </Jam>
                      <Jam>
                        <Message>1.4 Document Late to Reader On Doc sensor.</Message>
                        <Count>3</Count>
                        <Time>18</Time>
                      </Jam>
                      <Jam>
                        <Message>0.125 Double feed detected. Document held at the handfeed track</Message>
                        <Count>1</Count>
                        <Time>16</Time>
                      </Jam>
                      <Jam>
                        <Message>1.5 Document Late to PreScan IJP Entrance sensor.</Message>
                        <Count>1</Count>
                        <Time>3</Time>
                      </Jam>
                      <Jam>
                        <Message>3.2 Unexpected Item Detected at Dbl Feed exit sensor.</Message>
                        <Count>1</Count>
                        <Time>43</Time>
                      </Jam>
                    </Jams>
                  </Data>';
                  

                  --查询开始:

                  WITH DataNode AS
                  (
                      SELECT ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS Data_ID
                            ,Data.value('BatchNumber[1]','int') AS BatchNumber
                            ,Data.value('ComputerName[1]','nvarchar(max)') AS ComputerName
                            --add all columns of the first level below Data
                            ,Data.query('DocTypes') AS Doctype
                            ,Data.query('Jams') AS Jam
                      FROM @x.nodes('Data') AS A(Data)
                  )
                  ,Doctypes AS
                  (
                      SELECT DataNode.Data_ID
                            ,ROW_NUMBER() OVER(PARTITION BY Data_ID ORDER BY (SELECT NULL)) AS Doctype_ID
                            ,dt.value('@ID','int') AS DoctypeID
                            ,dt.value('Name[1]','nvarchar(max)') AS DoctypeName
                            ,dt.value('Count[1]','int') AS DoctypeCount
                      FROM DataNode
                      CROSS APPLY Doctype.nodes('DocTypes/Doctype') AS A(dt)
                  )
                  ,Jams AS
                  (
                      SELECT DataNode.Data_ID
                            ,ROW_NUMBER() OVER(PARTITION BY Data_ID ORDER BY (SELECT NULL)) AS Jam_ID
                            ,dt.value('Message[1]','nvarchar(max)') AS JamMessage
                            ,dt.value('Count[1]','int') AS JamCount
                            ,dt.value('Time[1]','int') AS JamTime
                      FROM DataNode
                      CROSS APPLY Jam.nodes('Jams/Jam') AS A(dt)
                  )
                  SELECT dn.*
                        --add all Data columns here
                        ,dt.Doctype_ID
                        ,dt.DoctypeCount
                        ,dt.DoctypeID
                        ,dt.DoctypeName
                        ,jm.Jam_ID
                        ,jm.JamCount
                        ,jm.JamMessage
                        ,jm.JamTime
                  INTO #tmpResult
                  FROM DataNode AS dn
                  INNER JOIN DocTypes AS dt ON dt.Data_ID=dn.Data_ID
                  INNER JOIN Jams AS jm ON dt.Data_ID=jm.Data_ID;
                  
                  SELECT DISTINCT Data_ID,BatchNumber,ComputerName INTO #MyDataTable FROM #tmpResult;
                  SELECT DISTINCT Data_ID,Doctype_ID,DoctypeID,DoctypeName,DoctypeCount INTO #MyDoctypeTable FROM #tmpResult;
                  SELECT DISTINCT Data_ID,Jam_ID,JamCount,JamMessage,JamTime INTO #MyJamTable FROM #tmpResult;
                  GO
                  
                  SELECT * FROM #MyDataTable;
                  SELECT * FROM #MyDoctypeTable;
                  SELECT * FROM #MyJamTable;
                  
                  GO
                  DROP TABLE #MyDataTable;
                  DROP TABLE #MyDoctypeTable;
                  DROP TABLE #MyJamTable;
                  DROP TABLE #tmpResult;
                  

                  这篇关于如何将 XML 文件及其列名导入 SQL 表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:在sql server中解析xml 下一篇:预期 XML 解析分号 - 仅在替换 &amp; 时与 &

                  相关文章

                  最新文章

                  <small id='W5Izs'></small><noframes id='W5Izs'>

                  <i id='W5Izs'><tr id='W5Izs'><dt id='W5Izs'><q id='W5Izs'><span id='W5Izs'><b id='W5Izs'><form id='W5Izs'><ins id='W5Izs'></ins><ul id='W5Izs'></ul><sub id='W5Izs'></sub></form><legend id='W5Izs'></legend><bdo id='W5Izs'><pre id='W5Izs'><center id='W5Izs'></center></pre></bdo></b><th id='W5Izs'></th></span></q></dt></tr></i><div id='W5Izs'><tfoot id='W5Izs'></tfoot><dl id='W5Izs'><fieldset id='W5Izs'></fieldset></dl></div>
                • <tfoot id='W5Izs'></tfoot>
                  <legend id='W5Izs'><style id='W5Izs'><dir id='W5Izs'><q id='W5Izs'></q></dir></style></legend>

                      • <bdo id='W5Izs'></bdo><ul id='W5Izs'></ul>