Bardzo chciałbym poradzić się tutaj z niektórymi informacjami pomocnymi przy wstawianiu dzienników śledzenia komunikatów z Exchange 2007 do SQL. Ponieważ mamy miliony na miliony wierszy dziennie, używam instrukcji Bulk Insert, aby wstawić dane do tabeli SQL.Rozdzielanie rozgraniczonych wartości w kolumnie SQL na wiele wierszy
Właściwie to faktycznie wrzucam do tablicy tymczasowej, a następnie stamtąd łączę dane w żywą tabelę, to jest do rozwiązywania problemów testowych, ponieważ pewne pola mają inne cytaty i takie wokół wartości.
To działa dobrze, z wyjątkiem faktu, że kolumna adresata jest polem rozdzielanym oddzielonym przez a; i może być niewiarygodnie długi, ponieważ może być wielu odbiorców wiadomości e-mail.
Chciałbym wziąć tę kolumnę i podzielić wartości na wiele wierszy, które następnie zostaną wstawione do innej tabeli. Problem polega na tym, że wszystko, co próbuję, trwa albo zbyt długo, albo nie działa tak, jak chcę.
Weźmy ten przykład dane:
message-id recipient-address
[email protected] [email protected]
[email protected] [email protected]
[email protected] [email protected];[email protected];[email protected]
chciałbym to być sformatowany jak na moim Odbiorcy tabeli:
message-id recipient-address
2D5E5[email protected] [email protected]
[email protected] [email protected]
[email protected] [email protected]
[email protected] [email protected]
[email protected] [email protected]
Czy ktoś ma jakieś pomysły o tym, jak mogę to zabrać ?
Znam PowerShell całkiem dobrze, więc próbowałem w tym, ale pętla foreach nawet na rekordach 28K trwała wiecznie do przetworzenia, potrzebuję czegoś, co będzie działało tak szybko/sprawnie jak to tylko możliwe.
Dzięki!
Myślę, że powinieneś umieścić trzy wyniki w tabeli za pomocą funkcji podziału Spójrz na to: http: // stackoverflow.com/questions/314824/t-sql-opposite-to-string-concatenation-how-to-split-string-into-multiple-reco A potem możesz dołączyć do swoich podzielonych danych na innym stole, aby uzyskać wynik – GregM