À la recherche d'un bon exemple de déchiquetage XML par insertion en bloc pour SQL 2005
-
03-07-2019 - |
Question
Un peu d'aide est nécessaire. Je reçois un fichier XML similaire à celui-ci:
<?xml version="1.0" encoding="utf-16"?>
<dc:GRANTEE xsi:schemaLocation="http://www.blahblahblah.com/FullSchema test.xsd " xmlns:dc="http://www.blahblahblah.com/FullSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RPGID>90CU0024</RPGID>
<PLANID>01</PLANID>
<CASE>
<CASEID>100001</CASEID>
<RPGID>90CU0024</RPGID>
<FILE_O>2008-02-08T00:00:00</FILE_O>
<ADULT>
<ADULTID>100001A1</ADULTID>
<CASEID>100001</CASEID>
<APRIMARY>1</APRIMARY>
<ARLTNSHP>BM</ARLTNSHP>
<ADOB>1978-12-03T00:00:00</ADOB>
<ARACAI>1</ARACAI>
<ASEX>2</ASEX>
<SATX>
<SATXID>MD2120378</SATXID>
<ADULTID>100001A1</ADULTID>
<SAASSESS>2008-02-22T00:00:00</SAASSESS>
<PUBPRVTX>1</PUBPRVTX>
<TXADMIT>2008-02-23T00:00:00</TXADMIT>
<TXSET>5</TXSET>
</SATX>
</ADULT>
<CHILD>
<CHILDID>100001C1</CHILDID>
<CASEID>100001</CASEID>
<CINDEX>1</CINDEX>
<CHBDATE>2008-02-05T00:00:00</CHBDATE>
<CHSEX>1</CHSEX>
<CHRACAI>0</CHRACAI>
<MALTX>
<MALTXID>10000023</MALTXID>
<CHILDID>100001C1</CHILDID>
<RPTDT>2008-02-05T00:00:00</RPTDT>
<CHMAL1>2</CHMAL1>
</MALTX>
</CHILD>
</CASE>
Ce que je dois faire est de l'importer et de le détruire en tables avec un proc stocké. J'ai été incapable de trouver autre chose qu'une régurgitation générale des exemples dans les livres en ligne, euh, en ligne. Ce qu'il me faut, c'est un petit guide syntaxique qui montre comment insérer en bloc le fichier (à l'aide d'OPENROWSET?), puis prendre toutes les données et les scinder en tables correspondantes tout en conservant les clés. Il semble que cela devrait être facile, mais le matériel de référence est difficile à trouver. J'ai également accès au schéma si j'en ai besoin et je peux aussi annoter.
Quelqu'un at-il une bonne référence?
La solution
Vous pouvez utiliser l'instruction BULK INSERT avec le mot-clé RAW pour charger les données dans une table avec une seule colonne. Il mettra le document entier dans une seule ligne. Puis interrogez la table et placez les données dans une variable avec un type de données XML.
Cette Le billet de blog montre comment extraire des données du document XML.