Passo5: Por fim, no arquivo .csv gerado, o número de linhas não foi nem 0 
(zero) e nem 1.840.161 (o total de registros na tabela) 



/tmp$ cat saida.csv | wc -l 
479700 




Como na utilização do comando COPY ocorre tudo dentro de uma transação (é tudo 
ou nada) porque obtive este resultado? 













O comando "COPY FROM " é totalmente feito em uma transação, e o controle de 
toda a operação é feito internamente pelo Postgres. 

É como se fosse um comando assíncrono , a carga é feita para uma área 
temporária, e depois os dados são inseridos na tabela, ou tudo ou nada. 





Já o comando "COPY TO" não é 100% controlado pelo Postgres, e sim pelo SO. 
Assim que o COPY inicia, o papel do Postgres é mandar gravar o arquivo, que é 
gerenciado pelo SO. Então este é um comando síncrono, ou seja, cada envio de 
dados do Postgres é gravado imediatamente pelo SO. 

Assim que você "matou" ou Postgres, o SO parou de gravar, mas o que estava lá 
foi gravado. 





[]´s, André Volpato
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a