2

かなり大きな xml ファイルから SQL Server にデータをインポートしようとしています。オンラインで検索した後、OpenXML を使用することにしました。私がこれまでに持っているクエリは

DECLARE @doc INT
DECLARE @xml XML
SELECT @xml = evnt
FROM OPENROWSET (BULK 'c:\archive.xml', SINGLE_BLOB) AS Import(evnt)

EXEC sp_xml_preparedocument @doc OUTPUT, @xml

SELECT *
FROM OPENXML( @doc, '/Events/eventData/event', 2)
WITH (
  id varchar(max)
)
EXEC sp_xml_removedocument @doc

このようにして、「イベント」内にリストされている要素を取得できますが、「イベント」からさらに 1 レベル下の要素を取得するにはどうすればよいでしょうか。たとえば、以下の「CustId」タグを取得するにはどうすればよいですか?

<event>
    <custromAttribute>
        <CustId>...

「イベント」内のアイテムが主に必要なため、パスを変更することはできません。また、他のアプローチもいいでしょう。SQL Server から実行する必要があるため、SSIS や他の同様の外部ツールを使用できません。XQuery はかなり時間がかかるようです。

SQL Server 2008 R2 を使用しています

4

1 に答える 1