BULK INSERT
Realizar tarefas utilizando interface e nosso amigo (mickey) mouse pode ser muito confortável, no entanto, nem sempre elas estão disponíveis ou em alguns cenários podem não ser a solução mais adequada.
Hoje pela manhã precisava importar dados para uma de nossas bases, a tarefa era urgentíssima, mas como sabemos é justamente nessas horas que dá tudo errado! Meu Management Studio acordou mal humorado e quando cliquei na opção importar ele disse sem pestanejar:
Unable to cast COM object of type ‘Microsoft.SqlServer.Dts.Runtime.Wrapper.PackageNeutralClass’ to interface type ‘Microsoft.SqlServer.Dts.Runtime.Wrapper.IDTSContainer90’ (…)
“Putz. Ok, hoje é sexta-feira, posso ir no Google e pesquisar sobre esse (maldito) erro”. Enquanto pensava nisso meu querido gerente liga perguntando: “Já importou os dados?”…
Ok, vamos deixar o Google pra lá (por enquanto).
Existe uma forma muito prática de importar dados no SQL Server e foi a ela que recorri, o comando T-SQL é o BULK INSERT e é bem simples, veja o exemplo:
BULK INSERT tb_unidade_taxas FROM ‘C:\arquivos_temp\tx_unid.txt’
WITH
(
FIRSTROW = 2,
FIELDTERMINATOR =‘;’
);
Neste caso o arquivo que eu precisava importar era o tx_unid.txt e ele foi gravado em C:\arquivos_temp do meu servidor SQL. Os dados desse arquivo foram importados para a tabela [tb_unidade_taxas] e como ele tinha algumas particularidades tive que informar no BULK INSERT que ele deveria ignorar a primeira linha (era uma linha com descrição das colunas) e o caractere o que separava um campo do outro era o ponto-e-vírgula (FIELDTERMINATOR =’;’).
Pronto! Arquivo importado.
O BULK INSERT tem diversos parâmetros que você pode conferir aqui.
Em outra oportunidade irei comentar outras vantagens da utilização do BULK INSERT e também pretendo comentar sobre o BCP, mas agora vou ao Google ver se encontro o remédio pro mau humor do meu Management Studio 🙂
Até +
Fala Silinhas!!! 🙂
Agora que vi que você tem um blog aqui no wordpress tb… Manda ver!!! 😉
Ahh..Agora também sou ex-Unilinhares… Abração…
Amigo, exite uma forma de fazer o BULK INSERT usando uma outra tabela como origem e não um arquivos?