Execute consultas do PostgreSQL na linha de comando


279

Eu inseri um dado em uma tabela .... Quero ver agora a tabela inteira com linhas e colunas e dados. Como eu posso exibi-lo através do comando?

Respostas:


476

psql -U username -d mydatabase -c 'SELECT * FROM mytable'

Se você é novo no postgresql e não está familiarizado com o uso da ferramenta de linha de comando psql, há algum comportamento confuso que você deve estar ciente quando entrar em uma sessão interativa.

Por exemplo, inicie uma sessão interativa:

psql -U username mydatabase 
mydatabase=#

Nesse ponto, você pode inserir uma consulta diretamente, mas lembre-se de encerrar a consulta com um ponto-e-vírgula;

Por exemplo:

mydatabase=# SELECT * FROM mytable;

Se você esquecer o ponto-e-vírgula, ao pressionar enter, não receberá nada na linha de retorno, pois psqlestará assumindo que você não terminou de inserir sua consulta. Isso pode levar a todos os tipos de confusão. Por exemplo, se você digitar novamente a mesma consulta, provavelmente criará um erro de sintaxe.

Como um experimento, tente digitar qualquer garble desejado no prompt do psql e pressione enter. psqlsilenciosamente fornecerá uma nova linha. Se você inserir um ponto-e-vírgula nessa nova linha e pressionar Enter, receberá o erro:

mydatabase=# asdfs 
mydatabase=# ;  
ERROR:  syntax error at or near "asdfs"
LINE 1: asdfs
    ^

A regra geral é: Se você não recebeu resposta, psqlmas esperava pelo menos ALGO, esqueceu o ponto-e-vírgula;


4
Desde pelo menos 7.2 (que eu já me preocupei em verificar, pode ser ainda mais cedo), o psql teve a opção --single-line(ou -s) que torna todos os comandos imediatos sem a necessidade de adicionar um ponto e vírgula.
29717 Gordon

3
Passei uma hora depurando e o problema era o ponto e vírgula ausente. OBRIGADO
Dawson B

106
SELECT * FROM my_table;

Onde my_tableestá o nome da sua tabela.

EDITAR:

psql -c "SELECT * FROM my_table"

ou apenas psqle, em seguida, digite suas consultas.


7
psql -U username -c your_database "SELECT * FROM my_table"
DrColossos

3
como dito, você deve encerrar seu comando com ponto e vírgula ; se você estiver em um sistema Windows, consulte o notws para usuários do Windows basicamente, basta colocar cmd.exe /c chcp 1252depois de abrir o prompt do console.
D_Guidi

2
para os futuros usuários, certifique-se de adicionar o -d antes de seu nome do banco, e -c antes da consulta: psql -U nome de usuário -d mydatabase -c 'SELECT * FROM mytable'
jmhead

2
não funcionou para mim .Eu fizpsql: FATAL: database "SELECT * FROM tb_name" does not exist
Jaswinder 20/04

Como o @DrColossos indicou, parece que aspas duplas ao redor do comando são necessárias pelo menos nos ambientes cli / lote do Windows.
Jewbix.cube 03/11/19

43

Se seu banco de dados estiver protegido por senha, a solução seria:

PGPASSWORD=password  psql -U username -d dbname -c "select * from my_table"

3
Nunca se sabe pode fornecer senha dessa maneira. É realmente útil ao fazer o teste. Graças
Zhihong

21

Abra o "SQL Shell (psql)" em seus Aplicativos (Mac).

insira a descrição da imagem aqui

Clique em Enter para as configurações padrão. Digite a senha quando solicitado.

insira a descrição da imagem aqui

*) Digite \?para obter ajuda

*) Digite \conninfopara ver com qual usuário você está conectado.

*) Digite \lpara ver a lista de bancos de dados.

insira a descrição da imagem aqui

*) Conecte-se a um banco de dados \c <Name of DB>, por exemplo\c GeneDB1

insira a descrição da imagem aqui

Você deve ver o prompt da chave mudar para o novo banco de dados, assim: insira a descrição da imagem aqui

*) Agora que você está em um determinado banco de dados, deseja conhecer os esquemas desse banco de dados. O melhor comando para fazer isso é \dn.

insira a descrição da imagem aqui

Outros comandos que também funcionam (mas não tão bons) são select schema_name from information_schema.schemata;e select nspname from pg_catalog.pg_namespace;:

insira a descrição da imagem aqui

-) Agora que você possui os esquemas, deseja conhecer as tabelas desses esquemas. Para isso, você pode usar o dtcomando Por exemplo\dt "GeneSchema1".*

insira a descrição da imagem aqui

*) Agora você pode fazer suas consultas. Por exemplo:

insira a descrição da imagem aqui

*) Aqui está a aparência do banco de dados, esquema e tabelas acima no pgAdmin:

insira a descrição da imagem aqui


3
  1. Abra um prompt de comando e vá para o diretório em que o Postgres instalou. No meu caso, meu caminho do Postgres é "D: \ TOOLS \ Postgresql-9.4.1-3". Depois disso, mova-se para o diretório bin do prompt de comando do Postgres.So é exibido como "D: \ TOOLS \ Postgresql-9.4.1-3 \ bin> "
  2. Agora, meu objetivo é selecionar "UserName" na tabela de usuários usando o valor "UserId". Portanto, a consulta ao banco de dados é " Select u." UserName "dos usuários u Onde u." UserId "= 1 ".

A mesma consulta está escrita como abaixo para o prompt de comando psql do postgres.

D: \ TOOLS \ Postgresql-9.4.1-3 \ bin> psql -U postgres -d DatabaseName -h localhost - t -c "Selecione u. \" UserName \ "dos usuários u Onde u. \" UserId \ "= 1;


3

Não tenho dúvidas sobre a resposta @Grant. Mas, às vezes, enfrento alguns problemas, como se o nome da coluna fosse semelhante a qualquer palavra-chave reservada do postgresql, como natural neste caso, SQL semelhante é difícil de executar a partir da linha de comando, pois "\ natural \" será necessário no campo Consulta. Portanto, minha abordagem é escrever o SQL em um arquivo separado e executá-lo na linha de comando. Isso também tem outra vantagem. Se você precisar alterar a consulta para um script grande, não precisará tocar no arquivo ou comando de script. Altere apenas o arquivo SQL como este

psql -h localhost -d database -U postgres -p 5432 -a -q -f /path/to/the/file.sql

3

Notei também que a consulta

SELECT * FROM nome da tabela;

gera um erro no prompt de comando psql e

SELECT * FROM "tablename";

funciona bem, muito estranho, então não esqueça as aspas duplas. Eu sempre gostei de bancos de dados :-(


-8

Para tipos específicos de instruções, você pode achar mais apropriado usar Azure Data Studio- para todo o resto, ele vem com a linha de comando interna. Usando o estúdio, você pode encontrar instruções de digitação e ler a saída mais confortável.

Siga os passos abaixo:

  1. Instalar o Azure Data Studio - é um editor moderno multiplataforma focado no desenvolvimento de dados; é de código aberto e extensível - duas coisas nas quais o PostgreSQL se baseia;
  2. Instale a extensão PostgreSQL
  3. Conecte-se ao seu servidor local ou remoto:

    insira a descrição da imagem aqui

  4. Concentre-se em escrever e executar apenas SQL:

    insira a descrição da imagem aqui

Existem muitos recursos interessantes, como salvar conexões, criar grupos de servidores e até um terminal embutido, se você estiver mais à vontade para executar alguma tarefa via psql.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.