Ir para conteúdo principal
Lucas Caton

Resumo de comandos úteis do PostgreSQL

Lucas Caton

Lucas Caton

@lucascaton
Este post é um resumo de comandos úteis para administração de bancos de dados PostgreSQL.

Criar uma senha

bash
sudo su postgres -c psql postgres
Quando o console do PostgreSQL abrir, rode:
sql
ALTER USER postgres WITH PASSWORD 'sua_senha';

Criar um banco de dados pelo terminal

bash
createdb -U username -E utf8 dbname -h localhost

Criar um banco de dados no console do PostgreSQL (psql)

bash
create database dbname with owner=postgres encoding='utf8';

Renomear um banco de dados

bash
alter database "old_name" rename to "new_name";

Apagar um banco de dados

bash
drop database dbname;

Dump (backup) de um banco de dados

bash
pg_dump dbname -h localhost -U postgres > backup.sql

Dump (backup) de uma tabela apenas

bash
pg_dump dbname -h localhost -U postgres > backup.sql --table=nome_tabela;

Dump (backup) de um banco de dados com apenas algumas tabelas

bash
pg_dump dbname -h localhost -U postgres > backup.sql --table=nome_tabela --table=outra_tabela;

Dump (backup) de um banco de dados sem determinada tabela

bash
pg_dump dbname -h localhost -U postgres > backup.sql --exclude-table=nome_tabela;

Dump (backup) de um banco de dados excluindo várias tabelas

bash
pg_dump dbname -h localhost -U postgres > backup.sql --exclude-table=nome_tabela --exclude-table=outra_tabela;

Restauração de um banco de dados (a partir de um arquivo SQL)

bash
psql dbname -h localhost -U postgres < backup.sql

Dump (backup) dos usuários de um banco de dados

bash
pg_dumpall -g -U postgres -h localhost > users.sql

Comandos especiais em queries SQL

Data

sql
select (current_date + integer '7') as nome_campo;

Erros comuns

Duplicate key value violates unique constraint

Ao migrar um banco de dados para PostgreSQL ou fazer alguma coisa errada sem querer, o seguinte erro pode aparecer:
bash
PGError: ERROR: duplicate key value violates unique constraint "tablename_pkey"
Para resolver:
sql
select setval('entities_id_seq', (select max(id) from entities)+1);

Personalizando o psql

Basta criar um arquivo ~/.psqlrc (similar ou igual à esse)

Alterando o pager

sql
\pset pager off
\pset pager off
\pset pager always
\pset pager occasionally
\pset pager at random`

Exibir (null) para campos null (em vez de não exibir nada)

sql
\pset null '(null)'

Post atualizado em 05/04/2018, 17:40:00