Mysql
 sql >> база данни >  >> RDS >> Mysql

Не може да се направи заявка за XML файл с OPENXML в SQL

Има няколко недостатъка:

  • ОТ OPENXML е остарял и не трябва да се използва повече (съществуват редки изключения)

  • вашият XML включва пространство от имена по подразбиране, което трябва да бъде декларирано

  • вашият XPath е грешен:/Return/ReturnData/IRS990ScheduleHIRS990ScheduleH/ трябва да бъде /Return/ReturnData/IRS990ScheduleH/

Но така или иначе трябва да се обърнете към модерния XQuery методи. Опитайте така:

--Това ще прочете XML в декларирана променлива.

--внимание Вашият XML е деклариран с utf-8 , това може да доведе до проблеми със специални знаци...

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

--Това е заявката, първо декларирайте пространството(ята) от имена, след това използвайте .nodes() и .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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какво е значението на цитирани знаци с силен акцент (известен още като backtick) в MySQL?

  2. Изпълнение на множество mysql оператори в една транзакция в инструмента за миграция на Mybatis

  3. Как да инсталирате phpMyAdmin в собствено приложение

  4. група по дата, потвърждение, изчакване

  5. MySQL Order By алтернативни стойности