SQL Server 2014を使用して多数のXMLファイルをクエリしようとしています。以下のコードを使用していますが、何も返されないため構文が間違っています。私の疑惑は、XMLファイルには奇妙なことがあります。SQLでOPENXMLを使用してXMLファイルをクエリできない
XMLテキストの一部のみをローカルに置くのではなく、クエリファイルに直接入れると、動作しているように見えますが、ファイルがたくさんあり、手動でローカルソースからクエリできるようにする必要がありますファイルの操作。
例XML:https://s3.amazonaws.com/irs-form-990/201600349349300510_public.xml
マイコード:事前に
DECLARE @x xml
SELECT @x = R
FROM OPENROWSET (BULK 'C:\Users\USER\990\Example.xml', SINGLE_BLOB) AS ReturnData(R)
SELECT @x
DECLARE @hdoc int
EXEC sp_xml_preparedocument @hdoc OUTPUT, @x
SELECT * FROM OPENXML (@hdoc, '/Return/ReturnData/IRS990ScheduleHIRS990ScheduleH/FinancialAssistanceAtCostTyp',3)
WITH (FinancialAssistancePolicyInd int '../FinancialAssistancePolicyInd',
FPGReferenceDiscountedCareInd int '../FPGReferenceDiscountedCareInd',
PersonsServedCnt int,
NetCommunityBenefitExpnsAmt int)
EXEC sp_xml_removedocument @hdoc
感謝。これを行う良い方法がある場合は、私に教えてください。私はSQLでXMLを扱うのが初めてです。
ありがとう、理論とクエリのために!本当にそれを訴える。私は、特殊文字が問題になることは間違いないと思っています。あなたが送ったコードは、XML文書のその部分に対しては、より早い部分のために働いていないので、きれいです。 (もしコードがとにかく動くはずだったら、私は間違いをしたかもしれません。) 私は特殊文字をどのように扱うことができますか? – riyadude
@riyadude特殊文字について:文字列を 'NVARCHAR(MAX)'型の変数に読み込んだ後、 ''宣言を切り捨て、これをXML型の変数に設定することをお勧めします。疑問符をプレースホルダとして取得したくない場合は、特殊文字は 'NVARCHAR(2バイトユニコード)である必要があります...しかし、XML宣言に' encoding = "utf-8" '(または何か* utf-16以外ではこれは動作しません(* can not-switch-encoding-error *)。*コードがとにかく動作するはずだったかどうかをお知らせください*:これはわかりません... – Shnugo
実際にすべて動作しています今度は特別なキャラクターの問題にぶつかりませんが、もし私がそうしたら、この投稿をチェックしてみましょう。 – riyadude