mkto Postado Maio 16, 2014 Denunciar Share Postado Maio 16, 2014 Olá amigos. Estou com uma dúvida extremamente pertinente. Já consegui resolver no MySQL mas como estou usando postgreSQL, não sei com se faz ainda. Bom, vamos lá. Eu tenho uma tabela chamada "noticia" em um banco A, preciso pegar os dados dessa tabela e passar para a tabela publicação do Banco B. Estou usando para execução query o PgAdmin. no MySQL eu faço assim. insert into bancoB.publicacao(campo1,campo2,campo3,campo4) select campo1,campo2,campo3,"dado fixo" from bancoA.noticia; No postgreSQL ele não consegue identificar qual o bancoB e qual o BancoA. Alguém sabe como posso fazer? Isso é uma limitação do PgAdmin? se for, qual ferramenta eu poderia usar para executar esse tipo de SQL? Abraços. Grato Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Dr. House Postado Maio 16, 2014 Denunciar Share Postado Maio 16, 2014 Se os 2 bancos forem no Postgresql, você tem de usar o schema para identifica-los tipo assim: insert into public.bancoB.publicacao ( select campo1, campo3, campo3 from public.bancoA.noticia ) não sei se a sintaxe ta certa, no que se refere aos () mas sei que é assim que eu faço. é q to sem nenhum exemplo aqui agora. mas você precisa usar o schema para identificar o banco. Se você não criou nenhum schema, você vai usar o padrão que é public. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mkto Postado Maio 19, 2014 Autor Denunciar Share Postado Maio 19, 2014 (editado) Obrigado pela resposta Dr. House.Não era bem assim que funcionava mas ajudou a sair do problema que estava tendo.Vou resumir um pouco de como eu resolvi o problema.Eu estava fazendo assim: insert into public.bancoB.publicacao(campo1,campo2,campo3,campo4) select campo1,campo2,campo3,"dado fixo" from public.bancoA.noticia; Estava saindo o seguinte erro: referências cruzadas entre bancos de dados não estão implementadas. Pesquisando sobre o erro achei em outro fórum que deveria usar o bdlink para trazer informações de outra tabela de outro banco.Correndo atrás desse dblink achei o script nesse siteExecutei o script que possui as funções do dblink dentro do banco. Em seguida criei um "referência" com as informações do banco que queria trazer as informações da seguinte maneira: SELECT dblink_connect('antigo','host=localhost port=5432 user=postgres dbname=antigo'); Usando a referência "antigo" fiz o insert na nova tabela do banco novo, da seguinte maneira: insert into tabela1(campo1,campo2,campo3) SELECT * FROM dblink('antigo', 'select campo1,campo2,campo3 from tabela02') AS nova_tabela( campo1 bigint, campo2 character varying, campo3 ) Sendo assim, defino este tópico como resolvido. Espero que seja útil para outras pessoas.Até + Editado Maio 19, 2014 por mkto Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 leonardot Postado Julho 18, 2017 Denunciar Share Postado Julho 18, 2017 Pessoal, Tomando como referência esse sql que funciona. insert into tabela1(campo1,campo2,campo3) SELECT * FROM dblink('antigo', 'select campo1,campo2,campo3 from tabela02') AS nova_tabela( campo1 bigint, campo2 character varying, campo3 ) Mas tenho um problema, isso funciona se na tabela de destino estiver vazia. Mas vamos supor que eu executei e atualizei a tabela de destino, no caso depois a tabela origem vai continuar sendo atualizada. Se eu for rodar de novo essa query vai dar erro porque além de pegar os novos vai pegar os dados antigos e vai dar erro de primary key. Qual seria a ideia em cima da query citada modificar para apenas inserir os dados que tiverem diferentes? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Ricardo Augusto Postado Novembro 29, 2017 Denunciar Share Postado Novembro 29, 2017 Usei o exemplo do colega acima e funcionou mas também parei na mesma situação da chave primaria...creio que deva ser alguma coisa utilizando o not exists mas não faço ideia de como colocar no código. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 s1dy Postado Dezembro 8, 2017 Denunciar Share Postado Dezembro 8, 2017 Bom dia, Para não ter problema com chave primária, o select q irá buscar os dados q querem inserir, terá q ter um where q os exclua. Ex: WHERE data >= now() - interval '7 days' assim ele iria trazer dados de 1 semana ou mais recente. Espero ter ajudado. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
mkto
Olá amigos.
Estou com uma dúvida extremamente pertinente. Já consegui resolver no MySQL mas como estou usando postgreSQL, não sei com se faz ainda. Bom, vamos lá.
Eu tenho uma tabela chamada "noticia" em um banco A, preciso pegar os dados dessa tabela e passar para a tabela publicação do Banco B.
Estou usando para execução query o PgAdmin.
no MySQL eu faço assim.
No postgreSQL ele não consegue identificar qual o bancoB e qual o BancoA.
Alguém sabe como posso fazer? Isso é uma limitação do PgAdmin? se for, qual ferramenta eu poderia usar para executar esse tipo de SQL?
Abraços. Grato
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.