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