sql >> Databáze >  >> RDS >> Mysql

Nelze dotazovat soubor XML pomocí OPENXML v SQL

Existuje několik nedostatků:

  • FROM OPENXML je zastaralý a neměl by být nadále používán (existují vzácné výjimky)

  • váš XML obsahoval výchozí jmenný prostor, který musí být deklarován

  • vaše XPath je chybná:/Return/ReturnData/IRS990ScheduleHIRS990ScheduleH/ by mělo být /Return/ReturnData/IRS990ScheduleH/

Ale každopádně byste se měli obrátit na moderní XQuery metody. Zkuste to takto:

--To přečte XML do deklarované proměnné.

--pozor Váš XML je deklarován pomocí utf-8 , může to vést k problémům se speciálními znaky...

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

--Toto je dotaz, nejprve deklarujte jmenný prostor(y) a poté použijte .nodes() a .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. SQLite3.Exception:Obraz disku databáze je chybný

  2. Přenos dat z jedné databáze do jiné databáze

  3. Jak převést 2d pole z PostgreSQL DB na java 2d pole pomocí JDBI?

  4. Chyba, že při instalaci PostGis na Debian nelze najít PGXS Makefile