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

Responder a