久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

  • <small id='RLMFQ'></small><noframes id='RLMFQ'>

      <legend id='RLMFQ'><style id='RLMFQ'><dir id='RLMFQ'><q id='RLMFQ'></q></dir></style></legend>

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

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

        以遞歸方式將 xml 粉碎到數據庫中

        shredding xml recursively into the database(以遞歸方式將 xml 粉碎到數據庫中)
        <i id='T5rM4'><tr id='T5rM4'><dt id='T5rM4'><q id='T5rM4'><span id='T5rM4'><b id='T5rM4'><form id='T5rM4'><ins id='T5rM4'></ins><ul id='T5rM4'></ul><sub id='T5rM4'></sub></form><legend id='T5rM4'></legend><bdo id='T5rM4'><pre id='T5rM4'><center id='T5rM4'></center></pre></bdo></b><th id='T5rM4'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='T5rM4'><tfoot id='T5rM4'></tfoot><dl id='T5rM4'><fieldset id='T5rM4'></fieldset></dl></div>

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

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

                  <tbody id='T5rM4'></tbody>

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

                • 本文介紹了以遞歸方式將 xml 粉碎到數據庫中的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

                  問題描述

                  限時送ChatGPT賬號..

                  我有以下 XML 數據和元素表.

                  I have the following XML data and the Element table.

                  DECLARE @input XML = '<root>
                       <C1>
                         <C2>
                           <C3>           <C4>data1</C4>       </C3>         
                         </C2>
                         <C2>
                           <C3>data2</C3>
                         </C2>
                       </C1>
                       <D1>
                          <D2>data3</D2>
                          <D2>data4</D2>
                       </D1>
                      </root>'
                  

                  元素表:(這只是一個例子,因此可以更改以匹配適當的解決方案.)

                  Element table:( this is just an example so can be changed to match an appropriate solution.)

                  CREATE TABLE Element (  elementId INT IDENTITY PRIMARY KEY, 
                  elementName VARCHAR (200) NOT NULL, 
                  parentId INT,   
                  data VARCHAR(300) );
                  

                  根據@input,根元素是C1和D1的父元素,那么C1是C2的父元素,...

                  According to @input the root element is parent of C1 and D1, then C1 is C2 parent, ...

                  SQL server 2012/2014 使用 CTE(或任何其他類型的 SQL 對象)編寫存儲過程以遞歸方式將所有元素名稱放入 Element 表的解決方案是什么?

                  What is the solution for SQL server 2012/2014 to code a stored procedure with CTE (or any other type of SQL object) to recursively put all element names into the Element table?

                  在這種情況下,數據列填充了數據,C4 和第二個 C3 和 D2 元素有數據,其余元素為空.

                  data column fills with data in this case, the C4 and the second C3, and D2 elements have data the rest of element are null.

                  我也看到了分層數據類型,我想知道這是否有助于解決這個問題?

                  I also saw Hierarchical Data type and I wonder if that could be helpful to solve this problem?

                  推薦答案

                  With OpenXML 您可以使用 元屬性.

                  With OpenXML you can get a table representation of your XML with ID and ParentID columns using the metaproperties.

                  在合并中使用 XML 查詢將允許您創建映射表elementId 標識列和來自 XML 的 DOM 節點 ID 之間.

                  Using the XML query in a merge will allow you to create a mapping table between the elementId identity column and the DOM node id from the XML.

                  最后一步是使用映射表更新Element中的parentId.

                  The last step is to use the mapping table to update parentId in Element.

                  SQL 小提琴

                  MS SQL Server 2008 架構設置:

                  CREATE TABLE Element (  elementId INT IDENTITY PRIMARY KEY, 
                  elementName VARCHAR (200) NOT NULL, 
                  parentId INT,   
                  data VARCHAR(300) );
                  

                  查詢 1:

                  declare @input xml = '
                  <root>
                    <C1>
                      <C2>
                        <C3>
                          <C4>data1</C4>
                        </C3>
                      </C2>
                      <C2>
                        <C3>data2</C3>
                      </C2>
                    </C1>
                    <D1>
                      <D2>data3</D2>
                      <D2>data4</D2>
                    </D1>
                  </root>';
                  
                  -- OpenXML handle
                  declare @D int;
                  
                  -- Table that capture output of merge with mapping between 
                  -- DOM node id and the identity column elementID in Element 
                  declare @T table
                  (
                    ID int,
                    ParentID int,
                    ElementID int
                  );
                  
                  -- Parse XML and get a handle
                  exec sp_xml_preparedocument @D output, @input;
                  
                  -- Add rows to Element and fill the mapping table @T
                  merge into dbo.Element as E
                  using ( 
                        select *
                        from openxml(@D, '//*') with 
                          (
                            ID int '@mp:id',
                            ParentID int '@mp:parentid',
                            Data varchar(300) 'text()',
                            ElementName varchar(200) '@mp:localname'
                          )
                        ) as S
                  on 0 = 1
                  when not matched by target then
                    insert (elementName, data) values (S.ElementName, S.data)
                  output S.ID, S.ParentID, inserted.elementID into @T;
                  
                  -- Update parentId in Elemet
                  update E
                  set parentId =  T2.ElementID
                  from dbo.Element as E
                    inner join @T as T1
                      on E.elementId = T1.ElementID
                    inner join @T as T2
                      on T1.ParentID = T2.ID
                  
                  
                  -- Relase the XML document
                  exec sp_xml_removedocument @D;
                  
                  select *
                  from Element;
                  

                  結果:

                  | ELEMENTID | ELEMENTNAME | PARENTID |   DATA |
                  |-----------|-------------|----------|--------|
                  |         1 |        root |   (null) | (null) |
                  |         2 |          C1 |        1 | (null) |
                  |         3 |          C2 |        2 | (null) |
                  |         4 |          C3 |        3 | (null) |
                  |         5 |          C4 |        4 |  data1 |
                  |         6 |          C2 |        2 | (null) |
                  |         7 |          C3 |        6 |  data2 |
                  |         8 |          D1 |        1 | (null) |
                  |         9 |          D2 |        8 |  data3 |
                  |        10 |          D2 |        8 |  data4 |
                  

                  這篇關于以遞歸方式將 xml 粉碎到數據庫中的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

                  【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

                  相關文檔推薦

                  SQL query to get all products, categories and meta data woocommerce/wordpress(獲取所有產品、類別和元數據的 SQL 查詢 woocommerce/wordpress)
                  Can I figure out a list of databases and the space used by SQL Server instances without writing SQL queries?(我可以在不編寫 SQL 查詢的情況下找出數據庫列表和 SQL Server 實例使用的空間嗎?) - IT屋-程序員軟件開發
                  How to create a login to a SQL Server instance?(如何創建對 SQL Server 實例的登錄?)
                  How to know the version and edition of SQL Server through registry search(如何通過注冊表搜索知道SQL Server的版本和版本)
                  Why do I get a quot;data type conversion errorquot; with ExecuteNonQuery()?(為什么會出現“數據類型轉換錯誤?使用 ExecuteNonQuery()?)
                  How to show an image from a DataGridView to a PictureBox?(如何將 DataGridView 中的圖像顯示到 PictureBox?)

                  <legend id='8qg6b'><style id='8qg6b'><dir id='8qg6b'><q id='8qg6b'></q></dir></style></legend>

                  <small id='8qg6b'></small><noframes id='8qg6b'>

                        <tbody id='8qg6b'></tbody>

                        <tfoot id='8qg6b'></tfoot>
                          <bdo id='8qg6b'></bdo><ul id='8qg6b'></ul>
                          • <i id='8qg6b'><tr id='8qg6b'><dt id='8qg6b'><q id='8qg6b'><span id='8qg6b'><b id='8qg6b'><form id='8qg6b'><ins id='8qg6b'></ins><ul id='8qg6b'></ul><sub id='8qg6b'></sub></form><legend id='8qg6b'></legend><bdo id='8qg6b'><pre id='8qg6b'><center id='8qg6b'></center></pre></bdo></b><th id='8qg6b'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='8qg6b'><tfoot id='8qg6b'></tfoot><dl id='8qg6b'><fieldset id='8qg6b'></fieldset></dl></div>
                            主站蜘蛛池模板: 亚洲精品乱码久久久久久久久 | 亚洲国产欧美在线人成 | 在线午夜电影 | 高清亚洲| 亚洲精品一区久久久久久 | 国产 欧美 日韩 一区 | 欧美午夜一区二区三区免费大片 | 欧美一级视频免费看 | av高清| 欧美在线不卡 | 欧美日韩不卡合集视频 | 亚洲狠狠 | 宅男噜噜噜66一区二区 | 美女黄频| av免费成人 | 国内精品久久久久 | 91精品国产乱码久久久久久久久 | 国产精品美女久久久免费 | 成人1区 | 久久中文网 | 精品国产一区探花在线观看 | 午夜精品一区二区三区在线视 | 亚洲第一成人影院 | a级片在线| 亚洲一区视频 | 久久婷婷国产麻豆91 | 久久久久久久久国产精品 | 91国自产 | 日韩在线视频免费观看 | 午夜视频免费网站 | 91精品国产综合久久久久久 | 久久久.com | 羞羞网站在线免费观看 | 日韩欧美在线观看 | 五月婷婷中文 | 日本精品一区二区三区视频 | 精品一二三区 | 久久九九影视 | 免费精品视频在线观看 | 国产成人免费在线观看 | 国产精品夜夜春夜夜爽久久电影 |