Em 13/11/12, Dickson S. Guedes<[email protected]> escreveu: > 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. >
Excelente observação. Osvaldo _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
