Durch Trennzeichen getrennte Werte in einer SQL-Spalte in mehrere Zeilen aufteilen

Ich möchte hier wirklich einige Ratschläge geben, um Hintergrundinformationen zu geben, die ich beim Einfügen von Nachrichtenverfolgungsprotokollen aus Exchange 2007 in SQL verwende. Da wir Millionen und Abermillionen von Zeilen pro Tag haben, verwende ich eine Bulk Insert-Anweisung, um die Daten in eine SQL-Tabelle einzufügen.

Tatsächlich füge ich Bulk Insert in eine temporäre Tabelle ein und von dort aus füge ich die Daten in die Live-Tabelle ein. Dies dient zum Testen von Analyseproblemen, da bestimmte Felder ansonsten Anführungszeichen und dergleichen um die Werte haben.

Dies funktioniert gut, mit der Ausnahme, dass die Empfängeradressenspalte ein durch ein; getrenntes Feld ist. Charakter, und es kann manchmal unglaublich lang sein, da es viele E-Mail-Empfänger geben kann.

Ich möchte diese Spalte nehmen und die Werte in mehrere Zeilen aufteilen, die dann in eine andere Tabelle eingefügt werden. Das Problem ist, dass alles, was ich versuche, entweder zu lange dauert oder nicht so funktioniert, wie ich es möchte.

Nehmen Sie diese Beispieldaten:

message-id                                              recipient-address
[email protected]   [email protected]
[email protected]     [email protected]
[email protected]              [email protected];[email protected];[email protected]

Ich möchte, dass dies wie folgt in meiner Empfängertabelle formatiert wird:

message-id                                              recipient-address
[email protected]   [email protected]
[email protected]     [email protected]
[email protected]              [email protected]
[email protected]              [email protected]
[email protected]              [email protected]

Hat jemand eine Idee, wie ich das machen kann?

Ich kenne PowerShell ziemlich gut, also habe ich es versucht, aber es hat ewig gedauert, bis eine foreach-Schleife auch bei 28-KB-Datensätzen verarbeitet wurde. Ich benötige etwas, das so schnell / effizient wie möglich ausgeführt werden kann.

Vielen Dank!

Antworten auf die Frage(3)

Ihre Antwort auf die Frage