Utilizando Bulk Copy dentro de uma aplicação C#

Olá a todos, neste meu primeiro artigo aqui no InfoNaVeia, falarei sobre a  ferramenta Bulk Copy que foi implementada dentro do framework a partir da sua 2° versão.

A ideia veio do SQL Server, onde podemos enviar uma “quantidade grande de registros” entre duas bases de dados. Ganhando um desempenho na execução da tarefa quando bem utilizada.

A classe utilizada é System.Data.SqlClient.SqlBulkCopy onde terá todas as funcionalidades do Bulk Copy.

Mas o básico aqui está em transferir hoje alguns registros entre os bancos de dados “Origem” e “Destino”.

Aqui estamos instanciando a variável e conectando ao banco de dados de Destino.

SqlBulkCopy bulk = new SqlBulkCopy(ConexãoDestino);

Aqui está recebendo a tabela de destino.

bulk.DestinationTableName = “TabelaDestino”;

Aqui ele passa as informações do seu SELECT Tabela Origem para a Tabela Destino.

bulk.WriteToServer(drConsulta);

Agora o código fonte completo:

SqlConnection cnnOrigem = new SqlConnection();
SqlConnection cnnDestino = new SqlConnection();

cnnOrigem.ConnectionString = "Data Source=SQLSERVER;Initial Catalog=BanoOrigem;Integrated Security=True";

cnnDestino.ConnectionString = "Data Source=SQLSERVER;Initial Catalog=BancoDestino;Integrated Security=True";

cnnOrigem.Open();
cnnDestino.Open();

SqlCommand cmdComando = new SqlCommand("SELECT * FROM TabelaOrigem", cnnOrigem);

DataTable dtcadastroOrigem = new DataTable("CadastroOrigem");
SqlDataAdapter daCadastroOrigem = new SqlDataAdapter(cmdComando);

daCadastroOrigem.Fill(dtcadastroOrigem);

dataGridView2.DataSource = dtcadastroOrigem;

SqlDataReader drConsulta = cmdComando.ExecuteReader();

SqlBulkCopy bulk = new SqlBulkCopy(cnnDestino);

bulk.DestinationTableName = "CadastroDestino";

bulk.WriteToServer(drConsulta);

drConsulta.Close();

MessageBox.Show("Registros transferidos para a outra base de dados", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

cmdComando = new SqlCommand("SELECT COUNT(*) AS Contador FROM TabelaDestino", cnnDestino);

SqlDataReader drContador = cmdComando.ExecuteReader();

drContador.Read();

lblContador.Text = Convert.ToString(drContador["Contador"]);

drContador.Close();

cmdComando = new SqlCommand("SELECT * FROM TabelaDestino", cnnDestino);

DataTable dtcadastroDestino = new DataTable("CadastroDestino");
SqlDataAdapter daCadastroDestino = new SqlDataAdapter(cmdComando);

daCadastroDestino.Fill(dtcadastroDestino);

dataGridView1.DataSource = dtcadastroDestino;

cnnDestino.Close();
cnnDestino.Close();
bulk.Close();
drConsulta.Close();
cmdComando.Dispose();

Bom pessoal espero que tenham gostado da dica acima.

Abraços e até o próximo artigo!