# Copiar dados de um banco de dados para outros

**URL:** <https://community.latromi.com.br/t/copiar-dados-de-um-banco-de-dados-para-outros/1232>\
**Category:** Ajuda & Suporte\
**Tags:** csharp, lpa, form\
**Created:** [Maio 7, 2024, 5:11pm UTC](https://community.latromi.com.br/t/copiar-dados-de-um-banco-de-dados-para-outros/1232 "2024-05-07T17:11:05Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Thiago](https://community.latromi.com.br/letter_avatar_proxy/v4/letter/t/ec9cab/32.png) [@Thiago](https://community.latromi.com.br/u/Thiago)\
**Post date:** [Maio 7, 2024, 5:11pm UTC](https://community.latromi.com.br/t/copiar-dados-de-um-banco-de-dados-para-outros/1232/1 "2024-05-07T17:11:05Z")

</div>

Boa tarde

Gostaria de instrução de como criar uma rotina no **LPA** para que o sistema copie os dados de uma tabela existente em um banco de dados, para uma tabela dentro de outro banco de dados.

Obrigado

---

<div class="post-metadata">

**Author:** ![daniel.giacomelli](https://community.latromi.com.br/user_avatar/community.latromi.com.br/daniel.giacomelli/32/1476_2.png) [@daniel.giacomelli](https://community.latromi.com.br/u/daniel.giacomelli)\
**Post date:** [Agosto 1, 2024, 1:59pm UTC](https://community.latromi.com.br/t/copiar-dados-de-um-banco-de-dados-para-outros/1232/2 "2024-08-01T13:59:52Z")

</div>

Olá @Thiago, tudo bem?

Para fazer a cópia dos dados, de um banco de dados para o outro usando o LPA, você precisa criar um Formulário que faça esse intercâmbio, e depois programar a chamada deste Formulário no **Agendador de Tarefas**.

O intercâmbio entre esses dados precisa ser feito usando um **Código C#** no evento **Load** do Formulário.

* * *

Imagine que existam duas conexões de banco de dados cadastradas na plataforma. Uma se chama **Conexao-1** e a outra **Conexão-2** , e em ambas temos uma tabela chamada **resumo\_pedidos** com as colunas a seguir:

| Coluna | Tipo |
| --- | --- |
| idpedido | Int |
| datapedido | Date |
| idcliente | Int |
| valortotal | Numeric(10,2) |

O código C# no evento Load do Formulário, ficaria assim:

```cs
using LATROMI.Extensions;

// Pega a "data inicial" de uma variável do Formulário 
// chamada "v_data_inicial" para usar como filtro no SELECT
var dataInicial = (DateTime)Variables["v_data_inicial"].Value;

// Monta o comando SELECT usando "StringBuilder"
var sqlSelect = new StringBuilder()
    .AppendLine("SELECT")
    .AppendLine(" id")
    .AppendLine(", datapedido")
    .AppendLine(", idlciente")
    .AppendLine(", valortotal")
    .AppendLine("FROM resumo_pedidos")
    .AppendLine("WHERE datapedido >= @datapedido");

// Monta o comando INSERT usando "StringBuilder"
var sqlInsert = new StringBuilder()
    .AppendLine("INSERT INTO resumo_pedidos (")
    .AppendLine(" id")
    .AppendLine(", datapedido")
    .AppendLine(", idlciente")
    .AppendLine(", valortotal")
    .AppendLine(") VALUES (")
    .AppendLine(" @id")
    .AppendLine(", @datapedido")
    .AppendLine(", @idlciente")
    .AppendLine(", @valortotal")
    .AppendLine(");");

// Abre as duas conexões
using (var conexao1 = Database.CreateConnection("Conexao-1"))
using (var conexao2 = Database.CreateConnection("Conexao-2"))
{
    // Abre as conexões
    conexao1.Open();
    conexao2.Open();
    
    // Lista de chave/valor que será usada para preencher os parâmetros do SELECT
    var parametrosSelect = new Dictionary<string, object>
    {
        { "@datapedido", dataInicial }
    };

    // Busca os dados da "Conexao-1"
    using (var dados = conexao1.ExecuteReader(sqlSelect.ToString(), parametrosSelect))
    {
        // Enquanto houver linhas, continuar percorrendo
        while (dados.Read())
        {
            // Lista de chave/valor que será usada para preencher os parâmetros do INSERT
            var parametrosInsert = new Dictionary<string, object>
            {
                { "@id", dados["id"] },
                { "@datapedido", dados["datapedido"] },
                { "@idlciente", dados["idlciente"] },
                { "@valortotal", dados["valortotal"] }
            };

            // Executa comando Insert na "Conexao-2"
            conexao2.ExecuteNonQuery(sqlInsert.ToString(), parametrosInsert);
        }
    }
}

```

Obviamente, este é um exemplo simples, onde a estrutura de dados entre os dois bancos é idêntica. Quando a estrutura for diferente, será necessário realizar a conversão entre os tipos de dados.

Se tiver alguma dificuldade para fazer a implementação, avise aqui neste tópico 🙂

---

<div class="post-metadata">

**Author:** ![Thiago\_Cascaes](https://community.latromi.com.br/user_avatar/community.latromi.com.br/thiago_cascaes/32/2077_2.png) [@Thiago\_Cascaes](https://community.latromi.com.br/u/Thiago_Cascaes)\
**Post date:** [Agosto 1, 2024, 3:41pm UTC](https://community.latromi.com.br/t/copiar-dados-de-um-banco-de-dados-para-outros/1232/3 "2024-08-01T15:41:50Z")

</div>

Excelente dica @daniel.giacomelli !!! 😍😍😍
