Estou tentando exportar uma tabela do PostgreSQL com títulos para um arquivo CSV via linha de comando, no entanto, consigo exportar para arquivo CSV, mas sem títulos.
Meu código é o seguinte:
COPY products_273 to '/tmp/products_199.csv' delimiters',';
postgresql
csv
export-to-csv
heading
postgresql-copy
Elitmiar
fonte
fonte
Respostas:
conforme descrito no manual .
fonte
COPY
requer privilégios de administrador. Use\COPY
se você tiver problemas.COPY products_273 TO '/tmp/products_199.csv' WITH (FORMAT CSV, HEADER);
Na linha de comando do psql:
sem ponto e vírgula no final.
fonte
COPY
comando requer acesso de administradorpsql
abordagem, é possível salvar a saída em qualquer lugar ao qual tenha acesso. Eu apenas usei apsql
abordagem para obter dados de um servidor remoto em um arquivo local. Muito liso.pg_dump -h remote | pg_restore -h localhost
.psql -c "\COPY (SELECT * FROM mytable) TO STDOUT" > mytable.csv
em vez de apenas o nome da tabela, você também pode escrever uma consulta para obter apenas os dados da coluna selecionados.
com privilégio de administrador
fonte
\COPY ...
). E pelo menos na minha versão do psql (9.5.2), não era necessário especificar 'DELIMITER'; o padrão era uma vírgula.Quando não tenho permissão para gravar um arquivo no Postgres, acho que posso executar a consulta na linha de comando.
fonte
Isso funciona
fonte
-F ,
, e uso|
como separador. Obrigado!COPY
declaração que cria um arquivo para ser reutilizadoPara a versão 9.5 que eu uso, seria assim:
fonte
Esta solução funcionou para mim usando
\copy
.fonte
A maneira mais simples (usando
psql
) parece ser usando o--csv
sinalizador:fonte
Aqui está como eu consegui funcionar o shell de energia usando o pgsl connnect para um banco de dados Heroku PG:
Eu tive que primeiro mudar a codificação do cliente para utf8 assim:
\encoding UTF8
Em seguida, despejou os dados em um arquivo CSV:
Eu usei ~ como delimitador porque não gosto de arquivos CSV, geralmente uso arquivos TSV, mas ele não me permite adicionar '\ t' como delimitador, então usei ~ porque é um caractere raramente usado.
fonte
copiar (qualquer dado de consulta SQL quer exportar) para 'fileablsoutepathwihname' delimiter '', 'header csv;
Usando isso, você também pode exportar dados.
fonte
Estou postando esta resposta porque nenhuma das outras respostas aqui realmente funcionou para mim. Não pude usar
COPY
no Postgres porque não tinha as permissões corretas. Então, escolhi "Exportar linhas da grade" e salvei a saída como UTF-8.A
psql
versão dada por @Brian também não funcionou para mim, por um motivo diferente. O motivo pelo qual não funcionou é que, aparentemente, o prompt de comando do Windows (eu estava usando o Windows) estava interferindo com a codificação por conta própria. Eu continuei recebendo este erro:A solução que acabei usando foi escrever um pequeno script JDBC (Java) que leu o arquivo CSV e emitiu instruções de inserção diretamente na minha tabela do Postgres. Isso funcionou, mas o prompt de comando também teria funcionado se não estivesse alterando a codificação.
fonte
Tente o seguinte: "COPY products_273 FROM '\ tmp \ products_199.csv' DELIMITER ',' CSV HEADER"
fonte