sql >> Database >  >> RDS >> Mysql

Kan geen query uitvoeren op XML-bestand met OPENXML in SQL

Er zijn verschillende gebreken:

  • FROM OPENXML is verouderd en mag niet meer worden gebruikt (er zijn zeldzame uitzonderingen)

  • uw XML bevatte een standaard naamruimte, die moet worden gedeclareerd

  • uw XPath is verkeerd:/Return/ReturnData/IRS990ScheduleHIRS990ScheduleH/ moet zijn /Return/ReturnData/IRS990ScheduleH/

Maar hoe dan ook, je moet je wenden tot moderne XQuery methoden. Probeer het als volgt:

--Dit zal de XML inlezen in een gedeclareerde variabele.

--aandacht Uw XML wordt gedeclareerd met utf-8 , dit kan leiden tot problemen met speciale tekens...

DECLARE @x xml
SELECT @x = R
FROM OPENROWSET (BULK 'C:\Users\USER\990\Example.xml', SINGLE_BLOB) AS ReturnData(R);

--Dit is de query, declareer eerst de naamruimte(n), gebruik dan .nodes() en .value() :

WITH XMLNAMESPACES(DEFAULT 'http://www.irs.gov/efile'
                          ,'http://www.w3.org/2001/XMLSchema-instance' AS xsi)
SELECT ct.value('(FinancialAssistancePolicyInd)[1]','int') AS FinancialAssistancePolicyInd
      ,ct.value('(FPGReferenceDiscountedCareInd)[1]','int') AS FPGReferenceDiscountedCareInd
      ,ct.value('(FinancialAssistanceAtCostTyp/PersonsServedCnt)[1]','int') AS PersonsServedCnt
      ,ct.value('(FinancialAssistanceAtCostTyp/NetCommunityBenefitExpnsAmt)[1]','int') AS NetCommunityBenefitExpnsAmt
FROM @x.nodes('/Return/ReturnData/IRS990ScheduleH') AS A(ct)



  1. 4 manieren om alle tabellen in een MySQL-database weer te geven

  2. Waarom retourneert MySQL sommige floats in wetenschappelijke notatie, maar andere niet?

  3. Maak Oracle Databse opnieuw vanuit .dbf-bestanden na herinstallatie van Oracle Enterprise 11gR2

  4. Hoe mysql_fetch_assoc() problemen op te lossen