sudo su postgres -c psql postgres
ALTER USER postgres WITH PASSWORD 'sua_senha';
Gerenciar bancos de dados
Criar uma base pelo terminalcreatedb -U username -E utf8 dbname -h localhost
Criar uma base pelo psql
create database dbname with owner=postgres encoding='utf8';
Renomear uma base
alter database "old_name" rename to "new_name";
Apagar uma base
drop database dbname;
Backup (dump) e restore
Dump de uma basepg_dump dbname -h localhost -U postgres > backup.sql
Dump de uma tabela apenas
pg_dump dbname -h localhost -U postgres > backup.sql --table=nome_tabela;
Dump de uma base apenas com algumas tabelas
pg_dump dbname -h localhost -U postgres > backup.sql --table=nome_tabela --table=outra_tabela;
Dump de uma base sem determinada tabela
pg_dump dbname -h localhost -U postgres > backup.sql --exclude-table=nome_tabela;
Dump de uma base excluindo várias tabelas
pg_dump dbname -h localhost -U postgres > backup.sql --exclude-table=nome_tabela --exclude-table=outra_tabela;
Restore de uma base
psql dbname -h localhost -U postgres < backup.sql
Dump dos usuários de uma base
pg_dumpall -g -U postgres -h localhost > users.sql
Comandos especiais em queries
Data
select (current_date + integer '7') as nome_campo;
Veja mais exemplos aqui.
Erros comuns
Duplicate key value violates unique constraint
Ao migrar uma base para PostgreSQL ou fazer alguma coisa errada sem querer, o seguinte erro pode aparecer:
PGError: ERROR: duplicate key value violates unique constraint “tablename_pkey”
Para resolver:
select setval('entities_id_seq', (select max(id) from entities)+1);
Personalizando o psql
alterando o pager
\pset pager off
\pset pager off
\pset pager always
\pset pager occasionally
\pset pager at random
Exibir ‘(null)’ quando um campo for null
\pset null '(null)'
Veja mais configurações aqui.