- Este tópico contém 13 respostas, 5 vozes e foi atualizado pela última vez 16 anos, 4 meses atrás por
mpvargas.
-
AutorPosts
-
6 de novembro de 2009 às 9:05 pm #90753
mpvargas
ParticipanteCaros 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.6 de novembro de 2009 às 9:08 pm #90754rwarstat
ParticipanteQual 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
6 de novembro de 2009 às 9:12 pm #90755mpvargas
ParticipanteValeu 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…6 de novembro de 2009 às 9:35 pm #90757rwarstat
ParticipanteBom, 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.6 de novembro de 2009 às 9:54 pm #90758mpvargas
ParticipanteSe 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.6 de novembro de 2009 às 10:20 pm #90760rwarstat
ParticipanteO 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
6 de novembro de 2009 às 10:20 pm #90761Regis Araujo
ParticipanteSalve 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..!!
6 de novembro de 2009 às 11:13 pm #90762mpvargas
ParticipanteValeu Amigos,
Obrigado pela dica.
Vou tentar das duas formas sugeridas.
Obrigado.9 de novembro de 2009 às 4:20 pm #90778diegolenhardt
ParticipanteNã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,
=]
9 de novembro de 2009 às 5:04 pm #90782mpvargas
ParticipanteFala 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.9 de novembro de 2009 às 5:36 pm #90783burga
ParticipanteComo 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.
9 de novembro de 2009 às 10:23 pm #90793mpvargas
ParticipanteCaros amigos,
Tentei da forma sugeridainsert into tabela_nova(campo1, campo2, campo3,campo4,campoN)
select campo2, campo3, campo1, campo4, campoN from tabela_antiga;mas está dando erro…
vou continuar tentando
9 de novembro de 2009 às 11:39 pm #90795rwarstat
ParticipanteQual o erro que dá?
Posta aí para podermos te ajuda.[]´s
Roberto9 de novembro de 2009 às 11:47 pm #90796mpvargas
ParticipanteOBRIGADO 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;
-
AutorPosts
- Você deve fazer login para responder a este tópico.