sql >> Databasteknik >  >> RDS >> Mysql

Det går inte att fråga XML-fil med OPENXML i SQL

Det finns flera brister:

  • FROM OPENXML är föråldrat och bör inte användas längre (sällsynta undantag finns)

  • din XML inkluderade ett standardnamnområde, som måste deklareras

  • din XPath är fel:/Return/ReturnData/IRS990ScheduleHIRS990ScheduleH/ ska vara /Return/ReturnData/IRS990ScheduleH/

Men hur som helst bör du vända dig till modern XQuery metoder. Prova så här:

--Detta kommer att läsa XML till en deklarerad variabel.

--uppmärksamhet Din XML deklareras med utf-8 , kan detta leda till problem med specialtecken...

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

--Detta är frågan, deklarera först namnutrymmet/namnutrymmena, använd sedan .nodes() och .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. Oracle glidande medelvärde

  2. MySQLdb Stored Procedure Out-parameter fungerar inte

  3. Upptäck, ta bort tomma kolumner och uppdatera databasen i sql, oracle

  4. Samma maven med olika beteenden