J'ai un grand fichier XML que je souhaite entrer dans SQL Server, donc je l'interroge dans un format lisible pour un utilisateur final. J'ai commencé à démarrer sur une requête et je peux obtenir des données mais je ne peux pas obtenir le reste.
Ceci est un exemple d'ensemble de données de mon fichier XML P> ceci est mon code actuel p> i J'essaie d'obtenir une colonne pour chacun des éléments suivants P> file/edxMsg/trnData/respCurrent/payDtl/cmpDtl
3 Réponses :
SQL Server fournit un type de données XML à stocker et à rechercher sur les données XML. Si vous souhaitez rechercher sur XML dans le serveur SQL, vous pouvez suivre ci-dessous étapes - P>
Remarque: Si vous avez de grandes données, vous devez également créer des index XML sur la colonne XML pour améliorer la performance de recherche. p>
Vous pouvez vous référer ci-dessous lien pour le code exemple p>
Comment puis-je interroger une valeur dans Colonne SQL Server XML P>
Comment allez-vous faire cela?
Regardez sur Ce mur de code . Il n'est pas nécessaire de faire "l'étape 1" et "pas"
Vous devriez vraiment consulter le support XQuery intégré - et lancer l'ancienne et legacy Essayez ceci pour obtenir tout le Ceci renvoie une liste de toutes les valeurs (trois colonnes openxml code> approche. CMP code>, CMPPAYAMNT code >, et CMPPAYCODE code>) de votre XML, comme des données relationnelles appropriées, qui peuvent alors être par exemple inséré dans une table. p> p>
L'approche avec Utilisez plutôt le Méthodes XML natif fournies par le type de données XML. P> Essayez ceci: p> Dans ce cas, j'ai utilisé La partie difficile sera le contenu de Le premier message affiche un simple Le problème est que cela nécessitera beaucoup de penser car il semble couvrir une structure associée complexe Une question comme ce qui suit vous aiderait à obtenir données de votre En outre, vous devez connaître très bien le format EDXMSG, s'il y a peut-être des éléments Dans votre message non couvert par cet échantillon. P> Ainsi, nous pouvons offrir et expliquer les outils nécessaires pour extraire les données, mais vous devez vous connaître, quel format lisible em> est ... p> p> à partir de OpenXML code> (ainsi que les deux procédures pour préparer et supprimer un document XML) est obsolète et ne doit plus être utilisée (des rares exceptions exceptions). SELECT A.msg.value('(edxMsgHdr/trnNm)[1]','nvarchar(10)') AS trnNm
,A.msg.value('(edxMsgHdr/trnAct)[1]','nvarchar(10)') AS trnAct
,A.msg.query('trnData') AS trnDataNode
,B.payDtl.value('(paySts)[1]','nvarchar(100)') AS paySts
,B.payDtl.value('(payType)[1]','nvarchar(100)') AS payType
,C.cmpDtl.value('(cmp)[1]','nvarchar(max)') AS cmp
,C.cmpDtl.value('(cmpPayAmt)[1]','decimal(10,4)') AS cmpPayAmt
FROM @xml.nodes('/file/edxMsg') A(msg)
CROSS APPLY A.msg.nodes('trnData/respCurrent/payDtl') B(payDtl)
CROSS APPLY B.payDtl.nodes('cmpDtl') C(cmpDtl)
.value () code> pour récupérer une valeur de la XML LI>
croix Appliquer yourxml.nodes ("Quelques xpath") code> pour transformer les éléments répétés en un ensemble dérivé. li>
.Query () code> pour récupérer un fragment du XML LI>
ul> .nodes () code> pour obtenir deux lignes de 1: 1 code> associée, nous pouvons donc les choisir facilement en utilisant .value () p > 1: N code> sur plusieurs tables. Tout élément répétitif (tel que
C'est génial, j'étais clairement très loin de la marque, merci de votre guidage et que vous dites maintenant, je dois savoir comment mettre ceci dans un format lisible .. Appréciez cela !!
Veuillez clarifier "un format lisible pour un utilisateur final". Est Ce mur a un format lisible?
Salut Alex, qui aide mais la raison pour laquelle je me lance est parce que j'ai besoin du nom de famille DOB prénom pour être inclus pour chaque ligne afin que je sache à qui elle appartient .. c'est la partie que je ne sais pas comment faire ...
J'ai une question similaire lecture XML de SQL. La meilleure méthode consiste à utiliser un langage de programmation tel que C # pour analyser le fichier, puis écrivez de C # à la base de données.