Estou usando o psql \dt
para listar todas as tabelas em um banco de dados e preciso salvar os resultados.
Qual é a sintaxe para exportar os resultados de um comando psql para um arquivo?
postgresql
psql
pstanton
fonte
fonte
Respostas:
Da ajuda do psql (
\?
):A sequência de comandos ficará assim:
fonte
\o
novamente desativa.\?
não vai para o arquivo. :(\o queries-output.txt
redireciona todos os comandos subseqüentes o / p para o arquivo nomeadoqueries-output.txt
e digitado\o
(no prompt do psql novamente) reverte esse comportamento de redirecionamento.O
\o
comando psql já foi descrito por jhwist.Uma abordagem alternativa é usar o
COPY TO
comando para gravar diretamente em um arquivo no servidor. Isso tem a vantagem de ser despejado em um formato fácil de analisar de sua escolha - em vez do formato tabulado do psql. Também é muito fácil importar para outra tabela / banco de dados usandoCOPY FROM
.NB! Isso requer privilégios de superusuário e gravará em um arquivo no servidor .
Exemplo:
COPY (SELECT foo, bar FROM baz) TO '/tmp/query.csv' (format csv, delimiter ';')
Cria um arquivo CSV com ';' como o separador de campos.
Como sempre, consulte a documentação para obter detalhes
fonte
\copy
que é um comando do postgres, pode funcionar para qualquer usuário. Não sei se funciona para \ dt ou não, mas a sintaxe geral é reproduzida no link a seguir Sintaxe de cópia do Postgres SQLO exemplo acima salvará a saída da consulta de seleção no nome do arquivo fornecido como um arquivo csv
EDITAR:
Para o meu servidor psql, o seguinte comando funciona: esta é uma versão mais antiga v8.5
fonte
Use o parâmetro do comando pgsql.
fonte
COPY tablename TO '/tmp/output.csv' DELIMITER ',' CSV HEADER;
este comando é usado para armazenar a tabela inteira como csvfonte
Se você recebeu o seguinte erro
ufgtoolspg=> COPY (SELECT foo, bar FROM baz) TO '/tmp/query.csv' (format csv, delimiter ';') ; ERROR: must be superuser to COPY to or from a file HINT: Anyone can COPY to stdout or from stdin. psql's \copy command also works for anyone.
você pode executá-lo desta maneira:
psql somepsqllink_or_credentials -c "COPY (SELECT foo, bar FROM baz) TO STDOUT (format csv, delimiter ';')" > baz.csv
fonte
Use a consulta abaixo para armazenar o resultado no arquivo csv
\ copy (sua consulta) no cabeçalho csv 'caminho do arquivo';
Exemplo
\ copy (selecione o nome, o número da data do pedido da compra) para o cabeçalho '/home/ankit/Desktop/result.csv' cvs;
Espero que isso ajude você.
fonte
Presumo que exista algum comando psql interno para isso, mas você também pode executar o
script
comando no pacote util-linux-ng :fonte
Essa abordagem funcionará com qualquer comando psql, do mais simples ao mais complexo, sem exigir nenhuma alteração ou ajuste no comando original.
NOTA: Para servidores Linux.
MODELO
EXEMPLO
MODELO
sudo -u postgres psql [some_db] -c "$(cat sqlcmd)" >>sqlop 2>&1
EXEMPLO
sudo -u postgres psql some_db -c "$(cat sqlcmd)" >>sqlop 2>&1
cat sqlop
Feito! Obrigado! = D
fonte
Abordagem para janela de encaixe
via comando psql
ou consulta do arquivo sql
fonte