Pular para o conteúdo
Visualizando 14 posts - 1 até 14 (de 14 do total)
  • Autor
    Posts
  • #90753
    mpvargas
    Participante

      Caros amigos,

      Preciso exportar uma tabela da base de produção e importar para a base de testes… até aí tudo bem… mas na base de testes a estrutura da tabela é um pouco diferente, tem alguns campos em outra ordem e um campo a mais na tabela da base de teste.
      Agradeço desde já pela ajuda.

      #90754
      rwarstat
      Participante

        Qual a possibilidade de tu gerar um insert into com os dados que tu precisa, colocando os campos na ordem que estão no teu ambiente de teste?

        Roberto

        #90755
        mpvargas
        Participante

          Valeu pela dica Roberto
          Estou pensando em algumas possibilidades e essa é uma boa idéia…
          minha dúvida é justamente com relação aos campos que estão em ordem diferente…

          #90757
          rwarstat
          Participante

            Bom, seguindo a minha dica, tu teria que montar o insert na mão, colocando os campos na ordem que tu precisa.
            É um processo mais trabalhoso, mas fica muito bom.

            #90758
            mpvargas
            Participante

              Se eu fizer dessa forma
              INSERT INTO TABELA_NOVA SELECT * FROM TABELA_ANTIGA;

              Vou inserir na tabela antiga todos os dados da tabela nova, certo?

              Como tenho estrutura diferente, tenho que dizer os campos

              INSERT INTO TABELA_NOVA (campo1, campo2, … campon)

              mas como eu dou sequencia ao comando para pegar os dados?
              Essa é minha dúvida.

              #90760
              rwarstat
              Participante

                O select abaixo que irá te gerar as instruções de insert da tabela_nova baseada na tabela_antiga:

                SELECT 'insert into tabela_nova (campo1, campo2, ...) values ('
                || tabela_antiga.campo1
                || ', '
                || tabela_antiga.campo2
                || ');'
                FROM tabela_antiga

                #90761
                Avatar photoRegis Araujo
                Participante

                  Salve Vargas.. boa tarde..!

                  Pq vc não gera o EXP criando ao inves de um DMP um arquivo SQL com os comandos DDL e DML de inserção.. ai vc altera os dados da maneira que vc precisa..

                  Bom.. se eu entendi bem.. vc precisa fazer assim..

                  insert into tabela_nova(campo1, campo2, campo3,campo4,campoN)
                  select campo2, campo3, campo1, campo4, campoN from tabela_antiga;

                  Abraços..!!

                  #90762
                  mpvargas
                  Participante

                    Valeu Amigos,
                    Obrigado pela dica.
                    Vou tentar das duas formas sugeridas.
                    Obrigado.

                    #90778
                    diegolenhardt
                    Participante

                      Não é possível criar um dblink entre as bases, acho que fica mais fácil pra montar um comando insert, já que voce poderá especificar as colunas em um select,

                      =]

                      #90782
                      mpvargas
                      Participante

                        Fala Diego,
                        Eu já transferi a tabela original para a base de teste, então nesse caso não precisarei criar o dblink, pois estou usando a mesma base…
                        A minha idéia foi de ter as duas tabelas na mesma base e depois que eu fizer a transferencia dos dados, eu elimino uma e renomeio a outra…
                        A minha grande dúvida é de que como fazer essa transferencia de dados, já que uma tabela tem 234 campos e a outra tem 235 campos.
                        Valeu pela dica.

                        #90783
                        burga
                        Participante

                          Como já foi dito aqui, você pode fazer o

                          insert into tabela_original ([campos na mesma ordem dos campos da tabela_com_dados]) select * from tabela_com_dados;

                          E o campo que existe na tabela_original (de testes) mas não existe na de produção você não define.

                          #90793
                          mpvargas
                          Participante

                            Caros amigos,
                            Tentei da forma sugerida

                            insert into tabela_nova(campo1, campo2, campo3,campo4,campoN)
                            select campo2, campo3, campo1, campo4, campoN from tabela_antiga;

                            mas está dando erro…

                            vou continuar tentando

                            #90795
                            rwarstat
                            Participante

                              Qual o erro que dá?
                              Posta aí para podermos te ajuda.

                              []´s
                              Roberto

                              #90796
                              mpvargas
                              Participante

                                OBRIGADO PELA AJUDA DE TODOS

                                DEU CERTO COM ESSA DICA

                                insert into tabela_original ([campos na mesma ordem dos campos da tabela_com_dados]) select * from tabela_com_dados;

                              Visualizando 14 posts - 1 até 14 (de 14 do total)
                              • Você deve fazer login para responder a este tópico.