Resumo de comandos úteis do PostgreSQL
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)'