Pergunta

Eu estou tentando exportar uma tabela PostgreSQL com títulos para um arquivo CSV via linha de comando, no entanto eu obtê-lo para exportar para arquivo CSV, mas sem títulos.

Os meus olhares de código da seguinte maneira:

COPY products_273 to '/tmp/products_199.csv' delimiters',';
Foi útil?

Solução

COPY products_273 TO '/tmp/products_199.csv' WITH (FORMAT CSV, HEADER);

tal como descrito no manual.

Outras dicas

A partir da linha de comando psql:

\COPY my_table TO 'filename' CSV HEADER

nenhum ponto e vírgula no final.

em vez de nome de tabela apenas, você também pode escrever uma consulta para obter dados da coluna só selecionadas.

COPY (select id,name from tablename) TO 'filepath/aa.csv' DELIMITER ',' CSV HEADER;

com privilégios de administrador

\COPY (select id,name from tablename) TO 'filepath/aa.csv' DELIMITER ',' CSV HEADER;

Quando eu não tenho permissão para gravar um arquivo para fora do Postgres eu acho que eu pode executar a consulta a partir da linha de comando.

psql -U user -d db_name -c "Copy (Select * From foo_table LIMIT 10) To STDOUT With CSV HEADER DELIMITER ',';" > foo_data.csv

Isso funciona

psql dbname -F , --no-align -c "SELECT * FROM TABLE"

Para a versão 9.5 uso I, seria assim:

COPY products_273 TO '/tmp/products_199.csv' WITH (FORMAT CSV, HEADER);

Esta solução funcionou para mim usando \copy.

psql -h <host> -U <user> -d <dbname> -c "\copy <table_name> FROM '<path to csvfile/file.csv>' with (format csv,header true, delimiter ',');"

Veja como eu tenho que trabalhar shell de energia usando PGsl connnect para um banco de dados Heroku PG:

Eu tive que primeiro alterar a codificação do cliente para utf8 assim: \encoding UTF8

Em seguida, jogou os dados para um arquivo CSV com isto:

\copy (SELECT * FROM my_table) TO  C://wamp64/www/spider/chebi2/dump.csv CSV DELIMITER '~'

Eu usei ~ como delimitador porque eu não gosto de arquivos CSV, eu costumo usar arquivos TSV, mas não vai me deixar adicionar '\ t' como delimitador, então eu usei ~ porque é um characeter raramente usado.

copiar (anysql consulta datawanttoexport) para 'fileablsoutepathwihname' delimitador '' cabeçalho CSV;

Usando este u pode exportar dados também.

Estou postando esta resposta porque nenhuma das outras respostas dadas aqui realmente funcionou para mim. Eu não poderia usar COPY de dentro Postgres, porque não tem as permissões corretas. Então, eu escolhi "linhas de grade de exportação" e salva a saída como UTF-8.

A versão psql dado por @ Brian também não funcionou para mim, por um motivo diferente. A razão não funcionou é que, aparentemente, o comando do Windows prompt de (eu estava usando Windows) foi intromissão ao redor com a codificação por conta própria. Eu continuei recebendo este erro:

ERRO: carácter com 0x81 sequência de bytes na codificação "WIN1252" não tem nenhum equivalente na codificação "UTF-8"

A solução acabei usando era escrever um curto JDBC roteiro (Java) que leia o arquivo CSV e emitiu inserção declarações diretamente em minha mesa Postgres. Isso funcionou, mas o prompt de comando também teria funcionado se não tivesse sido alterar a codificação.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top