Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Không thể truy vấn tệp XML bằng OPENXML trong SQL

Có một số sai sót:

  • FROM OPENXML đã lỗi thời và không được sử dụng nữa (hiếm có trường hợp ngoại lệ)

  • XML của bạn bao gồm một vùng tên mặc định, vùng này phải được khai báo

  • XPath của bạn sai:/Return/ReturnData/IRS990ScheduleHIRS990ScheduleH/ phải là /Return/ReturnData/IRS990ScheduleH/

Nhưng dù sao thì bạn cũng nên chuyển sang XQuery hiện đại các phương pháp. Hãy thử nó như thế này:

--Điều này sẽ đọc XML thành một biến được khai báo.

- chú ý XML của bạn được khai báo bằng utf-8 , điều này có thể dẫn đến sự cố với các ký tự đặc biệt ...

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

--Đây là truy vấn, trước tiên hãy khai báo (các) không gian tên, thay vì sử dụng .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. Được phân tách bằng dấu phẩy Nhiều tự động hoàn thành trong một trường

  2. Định cấu hình MAMP để sử dụng mariadb

  3. NẾU KHÔNG TỒN TẠI KHÔNG LÀM VIỆC

  4. lập trình tham vấn trong khi và nếu được lồng vào nhau

  5. Truy vấn PHP không hiển thị tất cả kết quả trong bảng html