Eu sei que COPY é o melhor utilitário para exportar os dados de uma tabela ou uma consulta para arquivos de saída. Mas se estamos fazendo uma exportação como
\COPY (select * from table) to '/tmp/file.csv' WITH CSV;
Como é diferente de executar a consulta de seleção e salvar os resultados posteriormente (como em uma ferramenta GUI) oupsql -c'select * from table'> output.csv
Alguma vantagem de usar COPY em termos de desempenho e cache?
A ideia geral é que estou tentando entender os benefícios de desempenho de exportar os dados via leitura de select vs COPY de pythonpsycopg
Com
COPY
, o servidor formata os dados e não há esforço de formatação no cliente.Você deve testá-lo – isso deve ser simples de avaliar.
Seu exemplo que redireciona a saída do psql não produzirá o mesmo formato, então essa será uma diferença óbvia. Um menos óbvio pode ser que ele leia todo o conjunto de dados na memória antes de iterar sobre ele para exportar, portanto, é mais lento e mais propenso a travar com problemas de memória.