Divisão de valores delimitados em uma coluna SQL em várias linhas
Eu realmente gostaria de alguns conselhos aqui, para dar algumas informações básicas que estou trabalhando com a inserção de logs de controle de mensagens do Exchange 2007 em SQL. Como temos milhões e milhões de linhas por dia, estou usando uma instrução Bulk Insert para inserir os dados em uma tabela SQL.
Na verdade, eu realmente inserir em massa em uma tabela temporária e, em seguida, a partir daí eu MERGE os dados na tabela ao vivo, isso é para problemas de análise de teste como certos campos caso contrário, têm cotações e tal em torno dos valores.
Isso funciona bem, com a exceção do fato de que a coluna de endereço do destinatário é um campo delimitado separado por a; personagem, e pode ser incrivelmente longo, por vezes, como pode haver muitos destinatários de e-mail.
Eu gostaria de pegar essa coluna e dividir os valores em várias linhas que seriam inseridas em outra tabela. O problema é que qualquer coisa que estou tentando está demorando demais ou não está funcionando do jeito que eu quero.
Tome este exemplo de dados:
message-id recipient-address
[email protected] [email protected]
[email protected] [email protected]
[email protected] [email protected];[email protected];[email protected]
Eu gostaria que isso fosse formatado como segue na minha tabela de destinatários:
message-id recipient-address
[email protected] [email protected]
[email protected] [email protected]
[email protected] [email protected]
[email protected] [email protected]
[email protected] [email protected]
Alguém tem alguma idéia sobre como eu posso fazer isso?
Eu conheço o PowerShell muito bem, então eu tentei nisso, mas um loop foreach até mesmo em registros de 28K levou uma eternidade para ser processado, eu preciso de algo que seja executado o mais rápido / eficientemente possível.
Obrigado!