Si vous avez cette XML:Défi - Traitement XML dans la structure de la table T-SQL?
<people>
<person id="1">
<firstname>John</firstname>
<surname>Doe</surname>
</person>
<person id="2">
<firstname>Mary</firstname>
<surname>Jane</surname>
</person>
</people>
Et vous vouliez cette table:
id firstname surname
--- ---------- ----------
1 John Doe
2 Mary Jane
Comment décririez-vous l'obtenir là-bas, en utilisant T-SQLXML?
Et jeter une clé dans le mélange: Disons que vous connaissez la profondeur des éléments <person>
, <firstname>
et <surname>
, mais vous ne savez pas ce qu'ils appellent!
Ne hésitez pas à la flamme si vous pensez que cela est mieux affiché à reddit :)
OPENXML, même si maladroites, peut être beaucoup plus rapide (http://social.msdn.microsoft.com/Forums/en-US/sqlxml/thread/e51ef84d-72d6-490a-844a-fe28fbea3648). Ainsi, même si ce n'est pas la «méthode préférée», la performance l'emporte parfois sur la préférence. Mais j'ai quand même augmenté votre réponse parce que je pensais que c'était un bon :). – dcp
J'aime les deux réponses, mais tbh, celui-ci est plus simple (lire: il y a moins de code donc je comprends mieux, oups je viens de me frapper la tête sur la souris :) donc c'est ma 'bonne réponse', mais ils ' re les deux sont super. Le premier va prendre un peu plus d'apprentissage de ma part pour comprendre (ce que je ne suis pas contre, fyi) –
J'ai découvert qu'il est beaucoup, beaucoup plus rapide d'utiliser XQUERY avec SELECT/INTO pour vider dans une table temporaire, puis utilisez INSERT/INTO de la table temporaire dans la table de production. –