将信息从XML报告解析到SQL数据库

时间:2018-10-17 10:00:39

标签: sql xml openxml

我在解析XML报告中的信息时遇到问题。

XML结构如下:

<creditAccounts>
  <creditAccount>
   <accountDatabaseInfo>
       <recordId> 123 </recordId>
   </accountDatabaseInfo>
  <client> </client>
  <balance>
   <accountBalance>
     <BalanceId>   344354 </BalanceId>
     <BalanceDate> 2018-10-16 </BalanceDate>
   </accountBalance>
   <accountBalance>
     <BalanceId>   344357 </BalanceId>
     <BalanceDate> 2018-10-17 </BalanceDate>
   </accountBalance>
  </balance>
  </creditAccount>
  <creditAccount>
   <accountDatabaseInfo>
       <recordId> 222 </recordId>
   </accountDatabaseInfo>
  <client> </client>
  <balance>
   <accountBalance>
     <BalanceId>   485323 </BalanceId>
     <BalanceDate> 2018-10-05 </BalanceDate>
   </accountBalance>
   <accountBalance>
     <BalanceId>   546221 </BalanceId>
     <BalanceDate> 2018-10-06 </BalanceDate>
   </accountBalance>
   <accountBalance>
     <BalanceId>   439523 </BalanceId>
     <BalanceDate> 2018-10-02 </BalanceDate>
   </accountBalance>
  </balance>
  </creditAccount>
</creditAccounts>

所以在这种结构中,我有具有2 balancId历史记录的第一个信用帐户和具有3 balanceId历史记录的第二个信用帐户。我想要从表中获得的表包含所有balanceId和所有recordId:

Table

我正在使用以下代码通过OPENXML提取此信息:

FROM
       OPENXML(@Handle,'creditAccounts/creditAccount/balance/accountBalance', 2)
           WITH (   
                    recordId NVARCHAR(100) '/creditAccounts/creditAccount/accountDatabaseInfo/recordId//',
                    BalanceId NVARCHAR(100) 'balanceId',
                    BalanceDate NVARCHAR(100) 'balanceDate',


                    )       

问题是OPENXML中的初始路径包含所有BalanceId和所有BalanceDate数据,但是我将其与另一个节点中的recordId信息连接时遇到问题...我使用了新的源FOT recordId,但是尽管两个不同...有人知道如何更改此路径才能正常工作吗?我试图用不同的openxml路径联接2个表,但是仍然没有相同的键来联接它……有什么提示吗?

0 个答案:

没有答案