Donc, je viens de commencer diggin SSIS aujourd'hui, alors ne déteste pas trop s'il y a quelque chose d'évident que je suis manquant.SSIS: du fichier XML à plusieurs tables
J'ai un fichier XML (d'un tiers)
<root>
<foo>
<fooId>12345</fooId>
<name>FOO</name>
<bars>
<bar>BAR 1</bar>
<bar>BAR 2</bar>
[...]
</bars>
</foo>
[...]
</root>
et tables correspondantes dans mon DB:
Foo avec des champs (fooid, Nom)
Bar avec des champs (BarID (identité PK), FooID, Name)
Donc, fondamentalement, Bar est comme un ensemble d'attributs pour Foo. Donc, j'ajoute une source XML qui pointe vers ce fichier et produit 3 ensembles de données différents (foo
, bars
, bar
). Le problème est que bar
contient la valeur de bar
+ quelques ID générés automatiquement, ce qui n'est pas très utile. Le seul moyen d'obtenir un bar
avec bar
valeur et fooId
est de trier et de fusionner ces ensembles, ce qui semble plutôt étrange et va probablement tuer brutalement les performances (on parle ici de centaines de K de foo).
La question est: comment le faire correctement?
C'est à peu près ce que je fais en ce moment ... Ce que je m'attendais à trouver est la possibilité d'ajouter une colonne à l'ensemble du sous-élément à partir de son élément parent, car il est déjà donné par la structure. semble être pas une façon facile de le faire (ou peut-être que je suis aveugle?) –
Donc, je vais essayer d'aller avec l'approche XSLT. Cela aplanirait le schéma XML à un point où vous ne pourriez avoir qu'une seule sortie de la source de données XML. Ironie du sort que nous utilisons XSLT pour faire fonctionner XML comme un fichier plat. –