Le fractionnement délimité par des valeurs dans une colonne SQL en plusieurs lignes

J'aimerais bien quelques conseils ici, pour vous donner quelques informations de fond je suis en train de travailler à l'insertion de journaux de Suivi des Messages à partir d'Exchange 2007 en SQL. Comme nous avons des millions et des millions de lignes par jour, je suis à l'aide de l'instruction Bulk Insert pour insérer les données dans une table SQL.

En fait, j'ai fait Bulk Insert dans une table temporaire, puis à partir de là, j'ai FUSIONNER les données dans la table en direct, c'est pour le test analyse les problèmes que certains domaines par ailleurs avoir des devis et autour de ces valeurs.

Cela fonctionne bien, à l'exception du fait que le destinataire de l'adresse de colonne est un champ délimité, séparées par un ; personnage, et il peut être incroyablement long parfois, comme il peut y avoir beaucoup de destinataires de courrier électronique.

Je voudrais profiter de cette colonne, et de diviser les valeurs sur plusieurs lignes, qui serait ensuite être inséré dans une autre table. Problème est tout ce que je suis en train est soit trop long ou ne fonctionne pas comme je le veux.

Prendre cet exemple de données:

message-id                                              recipient-address
2D5E558D4B5A3D4F962DA5051EE364BE06CF37A3A5@Server.com   user1@domain1.com
E52F650C53A275488552FFD49F98E9A6BEA1262E@Server.com     user2@domain2.com
4fd70c47.4d600e0a.0a7b.ffff87e1@Server.com              user3@domain3.com;user4@domain4.com;user5@domain5.com

J'aimerais que ce soit formaté comme suit dans mon tableau des Destinataires:

message-id                                              recipient-address
2D5E558D4B5A3D4F962DA5051EE364BE06CF37A3A5@Server.com   user1@domain1.com
E52F650C53A275488552FFD49F98E9A6BEA1262E@Server.com     user2@domain2.com
4fd70c47.4d600e0a.0a7b.ffff87e1@Server.com              user3@domain3.com
4fd70c47.4d600e0a.0a7b.ffff87e1@Server.com              user4@domain4.com
4fd70c47.4d600e0a.0a7b.ffff87e1@Server.com              user5@domain5.com

Quelqu'un a une idée sur comment je peux faire?

Je sais PowerShell, j'ai donc essayé, mais une boucle foreach même sur 28K dossiers a fallu une éternité pour le processus, j'ai besoin de quelque chose qui va courir aussi rapidement et efficacement que possible.

Merci!

Je pense que vous devriez vous mettre trois résultat dans un tableau en utilisant une fonction "split" Regardez ceci : stackoverflow.com/questions/314824/... Et après que vous pouvez gérer à joindre à votre fractionner les données sur vous autre table pour obtenir votre résultat

OriginalL'auteur HungryHippos | 2012-06-13

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *