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

Responder a