Utilização do psql

Introdução

O psql é a ferramenta de linha de comando padrão para interagir com bancos de dados PostgreSQL, permitindo que você execute consultas SQL, configure o servidor, administre usuários e bancos de dados, importe e exporte dados, e muito mais. Neste artigo, você vai aprender sobre os principais utilitários, parâmetros e comandos, como também verá diversos exemplos de diferentes situações de uso.

Roteiro:

  • Conexão
  • Variáveis internas do psql
  • Comandos básicos
  • Arquivo psqlrc
  • Arquivo psql_history
  • Importar e exportar dados

Conexão

Para abrir o executável do psql, podemos rodar apenas “psql” (supondo que o binário já esteja na variável de ambiente PATH) ou então passar o caminho completo do seu binário.
Assim que entramos, é possível ver algumas informações sobre o PostgreSQL, como a versão do psql e do servidor, que pode ser diferente a depender da instalação:

• Com cliente (psql) e servidor na mesma versão:

Linux shell: acessando o psql
$ psql
psql (16.2 (Debian 16.2-1.pgdg120+2))
Type "help" for help.

• Com cliente (psql) e servidor em versões diferentes, sendo a versão do psql a 15.7 e do servidor a 16.2:

Linux shell: acessando o psql
$ /usr/lib/postgresql/15/bin/psql
psql (15.7 (Debian 15.7-1.pgdg120+1), server 16.2 (Debian 16.2-1.pgdg120+2))
WARNING: psql major version 15, server major version 16.
         Some psql features might not work.
Type "help" for help.

postgres=#

Ao acessar o psql, é possível passar alguns parâmetros, uns com informações da conexão, outros com ações para serem realizadas imediatamente após a conexão. Entretanto, mesmo com essa possibilidade, o psql é inteligente o suficiente para inferir alguns parâmetros de acesso automaticamente ou usar valores padrão, quando possível, e também variáveis de ambiente se estiverem configuradas.

Alguns dos principais parâmetros de conexão são:

  • -h ou --host: host (endereço) onde o servidor PostgreSQL está sendo executado (o padrão é localhost);
  • -p ou --port: número da porta em que o servidor PostgreSQL está recebendo as conexões (o padrão é 5432);
  • -U ou --username: nome do usuário usado para autenticar a conexão com o servidor (o padrão é o nome do usuário atual do sistema operacional).

E algumas das principais opções:

  • -d ou –-dbname: nome do banco de dados (o padrão é o nome do usuário passado);
  • -c ou --command: permite que você forneça uma consulta SQL ou um comando diretamente na linha de comando para ser executado imediatamente após a conexão ser estabelecida;
  • -v ou --variable: define uma variável de ambiente para a sessão do psql, que pode ser útil para personalizar o comportamento do psql durante uma sessão (veremos mais sobre isso adiante);
  • -l ou --list: lista todos os bancos de dados;
  • -E ou --echo-hidden: usado para exibir as consultas feitas pelos comandos internos do psql.

Considerando os parâmetros citados, alguns exemplos de acesso ao psql via Linux são:

• Acesso com parâmetros -h de endereço do servidor, -p de porta, -d de nome do banco de dados e -U de nome do usuário:

Linux shell: acessando o psql com parâmetros
$ psql -h localhost -p 5432 -d banco_exemplo -U usuario_exemplo
Password for user usuario_exemplo:
psql (16.2 (Debian 16.2-1.pgdg120+2))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off)
Type "help" for help.

• Acesso com parâmetros -h de endereço do servidor (dessa vez utilizando um IP), porta como default (sem passar o parâmetro, portanto, acessando diretamente a 5432), parâmetro de usuário e banco:

Linux shell: acessando o psql com parâmetros
$ psql -h 64.23.248.23 -U usuario_ex -d banco_exemplo
Password for user usuario_ex:
psql (16.2 (Debian 16.2-1.pgdg120+2))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off)
Type "help" for help.

banco_exemplo=>

• Acesso sem parâmetro, que permite que o psql interprete o usuário e o nome do banco de dados automaticamente, considerando o mesmo nome do usuário atual do Linux (nesse caso, usuário “postgres”, que acessou o usuário de mesmo nome no servidor e também entrou no banco chamado “postgres”):

Linux shell: acessando o psql sem nenhum parâmetro
$ psql
psql (16.2 (Debian 16.2-1.pgdg120+2))
Type "help" for help.

postgres=#

• Acesso com parâmetros de endereço do servidor e apenas do usuário, ocultando o nome do banco de dados e realizando a ação citada acima: caso seja omitido o nome do banco, o psql busca por algum banco que tenha o mesmo nome do usuário:

Linux shell: acessando o psql com apenas alguns parâmetros
$ psql -h 64.23.248.23 -U usuario_ex
Password for user usuario_ex:
psql (16.2 (Debian 16.2-1.pgdg120+2))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off)
Type "help" for help.

usuario_ex=>

• Acesso ao psql com parâmetro -c para utilização de um comando depois de acessá-lo (o acesso é feito, o comando rodado e depois você é desconectado do psql, então ele entra apenas para rodar o comando fornecido), no nosso caso, um SELECT dos dados de uma tabela:

psql: acessando o psql com um comando SQL
$ psql -c "SELECT * FROM minha_tabela;"
 id |      nome
----+----------------
  1 | Ana Clara
  2 | João Silva
  3 | Maria Souza
(3 rows)

$

• Acesso com parâmetro -v, definindo uma variável chamada “meu_nome”, com o valor “João”, e depois utilizando dessa variável para uma consulta na tabela “minha_tabela”:

psql: acessando o psql definindo uma variável
$ psql -v meu_nome="'João'"
psql (16.2 (Debian 16.2-1.pgdg120+2))
Type "help" for help.

postgres=# SELECT * FROM minha_tabela WHERE nome = :meu_nome;
 id | nome
----+------
  4 | João
(1 row)

• Acesso com parâmetro -l listando todos os bancos existentes no servidor (os bancos postgres, template0 e template1 são criados automaticamente na instalação):

Linux shell: acessando o psql com um comando interno
$ psql -l
                            List of databases
Name           |  Owner   | Encoding | Locale Provider | Collate |  Ctype  | ICU Locale | ICU Rules |   Access privileges
---------------+----------+----------+-----------------+---------+---------+------------+-----------+-----------------------
 banco_exemplo | postgres | UTF8     | libc            | C.UTF-8 | C.UTF-8 |            |           |
 postgres      | postgres | UTF8     | libc            | C.UTF-8 | C.UTF-8 |            |           |
 template0     | postgres | UTF8     | libc            | C.UTF-8 | C.UTF-8 |            |           | =c/postgres          +
               |          |          |                 |         |         |            |           | postgres=CTc/postgres
 template1     | postgres | UTF8     | libc            | C.UTF-8 | C.UTF-8 |            |           | =c/postgres                 

Os parâmetros para acessar o psql não são fornecidos aleatoriamente, existe uma ordem a ser seguida para que a conexão seja realizada com sucesso, pedindo as opções antes dos parâmetros de conexão. Essa ordem e outras informações úteis podem ser consultadas ao chamar o psql junto com o utilitário --help no shell:

Linux shell: consultando a ajuda do pacote psql
$ psql --help
psql is the PostgreSQL interactive terminal.

Usage:
  psql [OPTION]... [DBNAME [USERNAME]]

Um exemplo de acesso pelo Windows seria assim:

Windows shell: acessando o psql com parâmetros
> & "C:\Program Files\PostgreSQL\16\bin\psql.exe" -U usuario_ex -d banco_ex
Senha para o usuário usuario_ex:

psql (16.2)
Digite "help" para obter ajuda.

banco_ex=#

Arquivo .psqlrc

O arquivo .psqlrc é um arquivo de configuração que possibilita personalizar o comportamento padrão do psql ao iniciá-lo, permitindo a execução automática de uma variedade de comandos SQL e configurações especiais sempre que você acessa o psql. Isso acontece porque o psql procura automaticamente por esse arquivo, geralmente localizado em %APPDATA%\postgresql no Windows e no diretório home do usuário no Linux (~/.psqlrc).

Entre os comandos e as configurações que podem ser definidos no arquivo psqlrc, temos:

  • Definição de variáveis, as quais serão usadas durante sua sessão do psql;
  • Atalhos de comando: definição de atalhos de comando personalizados. Isso pode ser útil para criar abreviações para consultas SQL longas ou frequentemente usadas;
  • Configurações de exibição: personalização da aparência do psql, como alterar o formato de exibição das tabelas ou definir cores para destacar diferentes tipos de saída;
  • Comandos de inicialização: execução de comandos SQL específicos sempre que o psql é iniciado, ou seja, você pode definir um comando para exibir o tempo de execução das consultas SQL realizadas naquela sessão, com \timing.

Veja um exemplo de configuração útil que recomendamos para inserir no arquivo:

Text editor: visualizando o conteúdo do arquivo .psqlrc
\pset null '(null)'
\set PROMPT1 '%m: %n@%/%R%#%x '
\set PROMPT2 '%m: %n@%/%R%#%x '
\timing
\x auto

Explicando cada exemplo:

  • \pset null '(null)': define como o valor NULL será exibido no psql, sendo o valor padrão uma string vazia, alterado aqui para a string ‘(null)’, o que facilita a visualização dos dados;
  • \set PROMPT1 ‘%m: %n@%/%R%#%x ’ e \set PROMPT2 ‘%m: %n@%/%R%#%x ’:  define o prompt que será exibido no psql, sendo que a string ‘%m’ representa o endereço do servidor, a string ‘%n’ representa o nome do usuário na sessão, o @ serve apenas para separar uma informação da outra, seguido pela string ‘$/’ que mostra o nome da base de dados atual, depois temos a ‘/%R’ que mostra a informação sobre nossa conexão, sendo o valor padrão ‘=‘ e o valor que indica desconexão ‘!‘, a string ‘#’ mostra se estamos conectados com um superusuário ao exibir ‘#’ e ‘>’ no padrão, e a string ‘%x’ mostra o status de uma transação ‒ sendo ela vazia quando a transação acontece normalmente, ‘*’ para transações bloqueadas, ‘!’ para transações com falha ou ainda ‘?’ para transações com estado indeterminado. Você pode conferir diversas opções de personalização nesta página.
  • \set PROMPT2: diz respeito ao prompt que temos quando estamos finalizando algum comando SQL em outra linha, antes de terminá-lo com ‘;’ + Enter. Para manter a mesma visualização, é só repetir as mesmas configurações.

Agora, veja um exemplo sem a configuração:

psql shell: acesso sem configuração de prompt
postgres=#

E outro com a configuração:

psql shell: acesso com configuração de prompt
[local]: postgres@postgres=# 
  • \timing: ativa o cronômetro do psql, que mostrará o tempo decorrido para cada comando executado;
  • \x auto: ativa o modo de display expandido automático, para melhor exibir os resultados de consultas no terminal. Aqui, o psql tenta escolher automaticamente o modo que melhor se adapta ao tamanho do terminal, alternando entre modo expandido e não expandido.

Linux

Para criarmos o arquivo .psqlrc em sistemas Linux, podemos usar o seguinte comando:

Linux shell: criando o arquivo .psqlrc
nano ~/.psql

Após criado e aberto o arquivo, basta inserir nele suas configurações desejadas, conforme exemplo acima.

Windows

O arquivo deve ser criado na pasta de dados de aplicações do usuário, sendo essa uma pasta oculta, que tem como uma forma de acesso o atalho “Windows + R” > digite “%APPDATA%” > clique no botão Enter. A diferença aqui é o nome do arquivo, de acordo com a documentação oficial, ele deve ser chamado de psqlrc.conf, no caminho C:\Users\<usuario>\AppData\Roaming\postgresql (se não houver a pasta “postgresql” ao abrir AppData via atalho, basta criá-la).
O conteúdo é o mesmo do exemplo anterior.

Arquivo psql_history

O arquivo psql_history é um arquivo de texto que armazena o histórico de comandos que você executou no psql. Esse arquivo pode ser útil para:

  • Rever comandos: acessar comandos que você executou anteriormente, o que pode ser útil para depuração, repetição de comandos ou consulta de histórico;
  • Compartilhar comandos: compartilhar o histórico de comandos com outros usuários ou para fins de documentação;
  • Automatizar tarefas: usar scripts que reproduzem comandos do histórico para automatizar tarefas no psql.

Em sistemas Linux, ele também está localizado no diretório home do usuário (~/.psql_history).

Variáveis internas do psql

No psql do PostgreSQL, além das variáveis definidas pelo usuário, como :meu_nome exemplificada anteriormente, existem também variáveis internas predefinidas durante a sessão, que podem ser úteis em diferentes cenários, por exemplo, para gerar relatórios e executar scripts. Para conferir todas as opções, basta acessar a página do site oficial aqui.
Algumas das principais são:

  • :DBNAME: retorna o nome do banco de dados atualmente conectado;
  • :USER: retorna o nome do usuário atualmente conectado ao banco de dados;
  • :PORT: retorna o número da porta usada para a conexão com o servidor PostgreSQL;
  • :HOST: retorna o nome do host onde o servidor do banco de dados PostgreSQL está sendo executado.

Para consultar o valor de alguma dessas variáveis, podemos usar o utilitário \echo:

psql shell: consultando variáveis
\echo :'DBNAME'
\echo :'USER'
\echo :'PORT'
\echo :'HOST'

'postgres'
'postgres'
'5432'
'192.168.0.10'

Comandos básicos

O psql oferece uma variedade de comandos para interagir com o banco de dados PostgreSQL, que podem ser consultados no site oficial. Aqui estão alguns dos comandos básicos (todos utilizam o console interativo, então, para sair, é só apertar a letra q):

  • \?: exibe a lista de comandos disponíveis do psql, com explicação do que cada um faz, permitindo navegar por essa lista;
  • \h: exibe a lista de comandos SQL;
  • \h <instrução SQL>: usado para obter ajuda sobre uma instrução SQL específica. Deve-se digitar \h seguido pelo nome de uma instrução SQL (por exemplo, \h SELECT), e o psql exibe informações detalhadas sobre a sintaxe e o uso da instrução SQL especificada;
  • Comandos \d (é possível acrescentar “S” e/ou “+” em cada um deles, sendo “S” para mostrar objetos internos do sistema e “+” para revelar informações adicionais):
    • \d: lista todos os objetos do schema atual;
    • \d <nome do objeto>: mostra detalhes da estrutura do objeto especificado, podendo ser tabelas, views, índices, funções e sequências;
    • \dt: lista as tabelas no schema atual;
    • \df: lista todas as funções do schema atual; 
    • \di:  lista todos os índices existentes no schema atual;
    • \dx: lista todas as extensões instaladas no schema atual.
    • \dn: lista os schemas do banco;
    • \du: lista todos as roles do banco;
  • \l: lista os bancos de dados existentes;
  • \set: define uma variável de sessão com nome e valor específicos;
  • \unset: remove uma variável de sessão previamente definida com \set;
  • \i <nome do arquivo>: executa comandos SQL a partir de um arquivo, ou seja, importa arquivos no psql;
  • \o <nome do arquivo>: redireciona a saída de comandos para um arquivo de texto, ou seja, exporta arquivos no psql;
  • \o: termina o redirecionamento para o arquivo aberto anteriormente;
  • \t: ativa ou desativa a exibição do cabeçalho com os nomes das colunas e o rodapé com a contagem de linhas do resultado;
  • \x: ativa ou desativa a formatação de tabelas expandida, o que facilita a leitura e a visualização de tabelas com muitas colunas.

E aqui estão exemplos de uso desses comandos:

\l:

psql shell: exemplo do comando \l
# \l
                                                     List of databases
     Name      |  Owner   | Encoding | Locale Provider | Collate |  Ctype  | ICU Locale | ICU Rules |   Access privileges
---------------+----------+----------+-----------------+---------+---------+------------+-----------+-----------------------
 banco_exemplo | postgres | UTF8     | libc            | C.UTF-8 | C.UTF-8 |            |           |
  postgres     | postgres | UTF8     | libc            | C.UTF-8 | C.UTF-8 |            |           |
 template0     | postgres | UTF8     | libc            | C.UTF-8 | C.UTF-8 |            |           | =c/postgres          +
               |          |          |                 |         |         |            |           | postgres=CTc/postgres
 template1     | postgres | UTF8     | libc            | C.UTF-8 | C.UTF-8 |            |           | =c/postgres          +
               |          |          |                 |         |         |     
 (7 rows)

\d:

psql shell: exemplo do comando \d
# \d
                     List of relations
   Schema   |         Name         |   Type   |    Owner
------------+----------------------+----------+-------------
 meu_schema | Exemplo              | table    | meu_usuario
 meu_schema | Exemplo_id_seq       | sequence | meu_usuario
 meu_schema | Outro_exemplo        | table    | meu_usuario
 meu_schema | Outro_exemplo_id_seq | sequence | meu_usuario
 meu_schema | exemplo2             | table    | meu_usuario
 meu_schema | exemplo2_id_seq      | sequence | meu_usuario
 meu_schema | outro_exemplo        | table    | meu_usuario
 meu_schema | outro_exemplo_id_seq | sequence | meu_usuario
(8 rows)

\dt:

psql shell: exemplo do comando \dt
postgres=# \dt
             List of relations
 Schema |     Name      | Type  |  Owner
--------+---------------+-------+----------
 public | alunos        | table | postgres
 public | cidades       | table | postgres
 public | coordenadores | table | postgres
 public | minha_tabela  | table | postgres
 public | nomes         | table | postgres
 public | pessoas       | table | postgres
 public | professores   | table | postgres
(7 rows)

\dt, considerando schemas diferentes do mesmo banco de dados (schemas meu_schema e public). Veja que, para pegar todas as informações do schema e não apenas uma tabela específica, podemos utilizar o caracter *:

psql shell: exemplo do comando \dt com schemas especificados
postgres=# \dt meu_schema.*
              List of relations
   Schema   |   Name   | Type  |    Owner
------------+----------+-------+-------------
 meu_schema | exemplo2 | table | meu_usuario
(1 row)

postgres=# \dt public.*
           List of relations
 Schema |  Name   | Type  |    Owner
--------+---------+-------+-------------
 public | pessoas | table | meu_usuario
(1 row)

\d <nome do objeto>:

psql shell: exemplo do comando \d com objeto especificado
postgres=# \d alunos;
                                    Table "public.alunos"
 Column |   Type            | Collation | Nullable |  Default
--------+------------------------+-----------+----------+---------------------------------
 id     | integer           |           | not null | nextval('alunos_id_seq'::regclass)
 nome   | char varying(255) |           | not null |
Indexes:
    "alunos_pkey" PRIMARY KEY, btree (id)

\i <nome do arquivo>:

Vamos começar criando um arquivo com um script para ser executado no psql:

Debian shell: criando o arquivo meu_script.sql
$ nano meu_script.sql

INSERT INTO alunos (nome) VALUES ('João'), ('Caio'), ('Felipe');

SELECT * FROM alunos;

UPDATE alunos SET nome = 'Filipe' WHERE id = 6;

SELECT * FROM alunos;

Agora, vamos mostrar como rodar esse script com o \i:

psql shell: exemplo de input do script criado (meu_script.sql)
$ psql
psql (16.2 (Debian 16.2-1.pgdg120+2))
Type "help" for help.

postgres=# SELECT * FROM alunos;
 id |  nome
----+---------
  1 | Ludmila
  2 | Maria
  3 | Ana

postgres=# \i meu_script.sql
INSERT 0 3
 id |  nome
----+---------
  1 | Ludmila
  2 | Maria
  3 | Ana
  4 | João
  5 | Caio
  6 | Felipe
(6 rows)

UPDATE 1
 id |  nome
----+---------
  1 | Ludmila
  2 | Maria
  3 | Ana
  4 | João
  5 | Caio
  6 | Filipe
(6 rows)

No exemplo, é possível ver uma consulta de todos os dados da tabela alunos antes e depois do script rodar, adicionando três novos nomes e atualizando um deles (de “Felipe” para “Filipe”).

  • \o (deve ser usado antes do início do conteúdo que se deseja direcionar para o arquivo e, depois, para informar ao psql quando parar de enviar a saída) e \t (para um conteúdo mais limpo no segundo arquivo gerado):
psql shell: exemplo de output de saída
postgres=# \o alunos_nomes.txt
postgres=# SELECT * FROM alunos;
postgres=# \o
postgres=# \o alunos_nomes_t.txt
postgres=# \t
Tuples only is on.
postgres=# SELECT * FROM alunos;
postgres=# \o
postgres=# \q

$ ls
alunos_nomes.txt     alunos_nomes_t.txt      meu_script.sql     ...

$ cat alunos_nomes.txt
 id |  nome
----+---------
  1 | Ludmila
  2 | Maria
  3 | Ana
  4 | João
  5 | Caio
  6 | Filipe
(6 rows)

$ cat alunos_nomes_t.txt
  1 | Ludmila
  2 | Maria
  3 | Ana
  4 | João
  5 | Caio
  6 | Filipe

No exemplo, é possível ver o arquivo resultante da saída, chamado alunos_nomes.txt, com os títulos da coluna e informando o total de linhas e o alunos_nomes_t.txt, que foi rodado com o \t antes de finalizar a saída, trazendo um resultado mais limpo.

  • \x (exemplos da saída de uma consulta na tabela pg_class, o primeiro com o \x desativado, e o segundo com ele ativado):
psql shell: exemplo de consulta com o \x desativado
postgres=# SELECT * FROM pg_class;

  oid  |                    relname                     | relnamespace | reltype | reloftype | relowner | relam | relfilenode | reltablespace | relpages | reltuples | relallvisible | reltoastrelid | relhasindex | relisshared | relpersistence | relkind | relnatts | relchecks | relhasrules | relhastriggers | relhassubclass | relrowsecurity | relforcerowsecurity | relispopulated | relreplident | relispartition | relrewrite | relfrozenxid | relminmxid |                          relacl                          |       reloptions        | relpartbound
-------+------------------------------------------------+--------------+---------+-----------+----------+-------+-------------+---------------+----------+-----------+---------------+---------------+-------------+-------------+----------------+---------+----------+-----------+-------------+----------------+----------------+----------------+---------------------+----------------+--------------+----------------+------------+--------------+------------+----------------------------------------------------------+-------------------------+--------------
 16399 | minha_tabela_id_seq                            |         2200 |       0 |         0 |       10 |     0 |       16399 |             0 |        1 |         1 |             0 |             0 | f           | f           | p              | S       |        3 |         0 | f           | f              | f              | f              | f                   | t              | n            | f              |          0 |            0 |          0 |           
...   
psql shell: exemplo de consulta com o \x ativado
postgres=# \x
postgres=# SELECT * FROM pg_class;

-[ RECORD 1 ]-------+---------------------------------------------------------
oid                 | 16399
relname             | minha_tabela_id_seq
relnamespace        | 2200
reltype             | 0
reloftype           | 0
relowner            | 10
relam               | 0
relfilenode         | 16399
reltablespace       | 0
relpages            | 1
reltuples           | 1
relallvisible       | 0
reltoastrelid       | 0
relhasindex         | f
relisshared         | f
relpersistence      | p
relkind             | S
relnatts            | 3
relchecks           | 0
relhasrules         | f
relhastriggers      | f
relhassubclass      | f
relrowsecurity      | f
relforcerowsecurity | f
relispopulated      | t
relreplident        | n
relispartition      | f
relrewrite          | 0
relfrozenxid        | 0
relminmxid          | 0
relacl              |
reloptions          |
relpartbound        |
...

Conclusão

O psql é uma ferramenta com muitas opções e facilidades. Aqui, vimos apenas uma amostra de todo o seu potencial. Ele é também uma ferramenta nativa, que vem distribuída junto com os pacotes originais do PostgreSQL. Isso significa que ele é mantido e atualizado com o mesmo rigor e cuidado que o servidor, o que o torna extremamente confiável e robusto. 
No entanto, usar o psql para escrever longas e complexas consultas pode ser desagradável, mas você pode utilizar o seu editor de textos favoritos para escrever seu código SQL e executá-lo no psql com a opção \i, porém, muitas vezes, parece mais cômodo utilizar uma ferramenta gráfica para isso. Sem preconceitos, se você pesquisar, vai descobrir que 10 entre 10 DBAs Postgres preferem utilizar o psql no dia a dia. Entre as qualidades que esses profissionais apontam na hora de usar o psql, podemos mencionar:

  • Confiabilidade: o psql é desenvolvido e atualizado pela mesma equipe que desenvolve o PostgreSQL;
  • Sempre atualizado: toda nova funcionalidade do PostgreSQL implica atualizações correspondentes no psql para lidar com elas;
  • Robustez: como toda ferramenta em modo texto, a chance de ela quebrar quando rodar scripts SQL longos e pesados é muito baixa se comparada com qualquer outra ferramenta gráfica;
  • Está sempre disponível em qualquer ambiente: muitas vezes, você não tem acesso à porta 5432 ou não pode se conectar remotamente a um banco de dados de produção com uma ferramenta gráfica a partir do seu desktop. No entanto, todo servidor PostgreSQL tem por padrão um psql instalado junto com ele;
  • Facilidade de automatizar processos: o psql possui uma série de ferramentas para quem quer automatizar processos, criar jobs e outras tarefas do dia a dia de um DBA;
  • Simplicidade e eficiência: depois que você vence a curva de aprendizado inicial do psql, você deixa de utilizar o mouse e começa a ser bastante produtivo nas suas tarefas do dia a dia.

Então, mesmo que você não seja um entusiasta de ferramentas em modo texto, é fundamental aprender a se virar minimamente com o psql, assim como com um editor de texto (como o nano ou o vi) no modo texto. Em situações de emergência ou quando precisar executar tarefas complexas, o psql será um aliado de primeira linha.

Compartilhe

Você pode gostar

Catálogo do sistema (pg_catalog)

Introdução O pg_catalog é um schema especial no PostgreSQL que guarda todos os segredos do seu banco de dados. Quer saber como suas tabelas são

Arquivos, diretórios e processos

Introdução No PostgreSQL, a organização de arquivos e diretórios, bem como a gestão de processos, são componentes fundamentais para entender o seu funcionamento. Este artigo

Utilização de SQL básico

Introdução Já percorremos um bom caminho até aqui. Instalamos o PostgreSQL em diferentes cenários, vimos algumas ferramentas para utilização no dia a dia, mas você

plugins premium WordPress