Em 13 de novembro de 2012 00:13, Osvaldo Kussama <[email protected]> escreveu: > Em 13/11/12, Osvaldo Kussama<[email protected]> escreveu: >> Em 12/11/12, Mariana Hansen<[email protected]> escreveu: >>> Boa noite a todos. >>> >>> Recentemente mexendo com o mysql me pediram para que eu importasse os >>> dados >>> de um arquivo CSV para uma tabela: >>> >>> CSV -> tabela >>> >>> Sendo que se o id da chave já existir, se ouver mudanças no resto fazer o >>> update. >>> Se tiver registros a mais; inserir. >>> >>> Pois bem... >>> >>> Resolvi o caso usando no mysql >>> >>> LOAD DATA ... REPLACE; >>> >>> No mysql, esse "REPLACE" foi minha palavra salvadora... >>> Gostaria de saber como no nosso glorioso Postgres podemos fazer o mesmo >>> elegantemente. >>> Já consultei a documentação sobre o comando COPY e infelizmente não tem. >>> >> >> >> Está na TODO List: >> >> Add SQL-standard MERGE/REPLACE/UPSERT command >> >> MERGE is typically used to merge two tables. REPLACE or UPSERT >> command does UPDATE, or on failure, INSERT. See SQL MERGE for notes on >> the implementation details. >> >> http://wiki.postgresql.org/wiki/Todo >> >> Como uma possível alternativa, dentre outras, veja o exemplo 39-2 em: >> http://www.postgresql.org/docs/current/interactive/plpgsql-control-structures.html >> >> Osvaldo >> > > > Complementando para o seu caso específico: > Por que não um TRUNCATE seguido de um COPY?
A questão é que desta forma se existirem registros na tabela de origem que não estão no arquivo importado o efeito final seria a exclusão deles, o que pode não ser o caso. []s -- Dickson S. Guedes mail/xmpp: [email protected] - skype: guediz http://guedesoft.net - http://www.postgresql.org.br _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
