ssis将xml属性导入为元素

时间:2017-04-21 16:46:12

标签: sql xml xslt ssis sql-server-2016

我有以下(这只是一个示例)从第三方收到的xml(我们对更改结构没有影响)我们需要导入到SQL Server。这些文件中的每一个都有多个顶级节点(如果术语不正确,请原谅我,但我的意思是“CardAuthorisation”元素)。所以有些是CardFee,金融等等

问题在于细节属于属性。此文件来自新供应商。目前正在从另一个供应商处收到一个xml文件,这个文件更容易导入,因为数据是在元素中而不是在属性中。

以下是一个示例:

    <CardAuthorisation>
    <RecType>ADV</RecType>
    <AuthId>32397275</AuthId>
    <AuthTxnID>11606448</AuthTxnID>
    <LocalDate>20140612181918</LocalDate>
    <SettlementDate>20140612</SettlementDate>
    <Card PAN="2009856214560271" product="MCRD" programid="DUMMY1" branchcode=""></Card>
    <Account no="985621456" type="00"></Account>
    <TxnCode direction="debit" Type="atm" Group="fee" ProcCode="30" Partial="NA" FeeWaivedOff="0"></TxnCode>
    <TxnAmt value="0.0000" currency="826"></TxnAmt>
    <CashbackAmt value="0.00" currency="826"></CashbackAmt>
    <BillAmt value="0.00" currency="826" rate="1.00"></BillAmt>
    <ApprCode>476274</ApprCode>
    <Trace auditno="305330" origauditno="305330" Retrefno="061200002435"></Trace>
    <MerchCode>BOIA           </MerchCode>
    <Term code="S1A90971" location="PO NORFOLK STR 3372308 CAMBRIDGESHI3 GBR" street="" city="" country="GB" inputcapability="5" authcapability="7"></Term>
    <Schema>MCRD</Schema>
    <Txn cardholderpresent="0" cardpresent="yes" cardinputmethod="5" cardauthmethod="1" cardauthentity="1"></Txn>
    <MsgSource value="74" domesticMaestro="yes"></MsgSource>
    <PaddingAmt value="0.00" currency="826"></PaddingAmt>
    <Rate_Fee value="0.00"></Rate_Fee>
    <Fixed_Fee value="0.20"></Fixed_Fee>
    <CommissionAmt value="0.20" currency="826"></CommissionAmt>
    <Classification RCC="" MCC="6011"></Classification>
    <Response approved="YES" actioncode="0" responsecode="00" additionaldesc=" PO NORFOLK STR 3372308 CAMBRIDGESHI3 GBR"></Response>
    <OrigTxnAmt value="0.00" currency="826"></OrigTxnAmt>
    <ReversalReason></ReversalReason>
</CardAuthorisation>

我们需要做的是能够将其导入各种表格(每个顶级元素类型一个)。

因此,例如,CardAuthorisation应该导入“授权”表,CardFinancial应该转到“财务”表等。

所以问题是导入这些数据的最佳方法是什么。

读了一下后,我理解xslt可以用于此,并且能够将上述内容变为:

<CardAuthorisation>
    <RecType>ADV</RecType>
    <AuthId>32397275</AuthId>
    <AuthTxnID>11606448</AuthTxnID>
    <LocalDate>20140612181918</LocalDate>
    <SettlementDate>20140612</SettlementDate>
    <PAN>"2009856214560271"</PAN> 
    <product>MCRD</product>
    <programid>DUMMY1</programid>
    <branchcode>1</branchcode>
    <Accountno>"985621456"</Accountno>
    <type>"00"</type>
    <TxnCodedirection>"debit"</TxnCodedirection
    <TxnCodeType>"atm" </TxnCodeType>
    <TxnCodeGroup>"fee" </TxnCodeGroup>
    <TxnCodeProcCode>"30" </TxnCodeProcCode>
    <TxnCodePartial>"NA" </TxnCodePartial>
    <TxnCodeFeeWaivedOff>"0"</TxnCodeFeeWaivedOff>
    <TxnAmtvalue>"0.0000"</TxnAmtvalue>
    <TxnAmtcurrency>"826"</TxnAmtcurrency>
    <CashbackAmtvalue>"0.00"</CashbackAmtvalue>
    <CashbackAmtcurrency>"826"</CashbackAmtcurrency>
    <BillAmtvalue>"0.00" </BillAmtvalue>
    <BillAmtcurrency>"826" </BillAmtcurrency>
    <BillAmtrate=>1.00"></BillAmtrate>
    <ApprCode>476274</ApprCode>
    etc etc
</CardAuthorisation>

但我读的信息已经很老了(4-5岁),我知道SSIS总是在不断改进,所以不确定它今天是否仍然是有效的建议?

提前感谢您的想法。

0 个答案:

没有答案