Resumo de comandos úteis do PostgreSQL

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

Criar uma senha

sudo su postgres -c psql postgres

Quando o console do PostgreSQL abrir, rode:

ALTER USER postgres WITH PASSWORD 'sua_senha';`

Criar um banco de dados pelo terminal

createdb -U username -E utf8 dbname -h localhost

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

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

Renomear um banco de dados

alter database "old_name" rename to "new_name";

Apagar um banco de dados

drop database dbname;

Dump (backup) de um banco de dados

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

Dump (backup) de uma tabela apenas

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

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

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

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

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

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)

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

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

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

Comandos especiais em queries SQL

Data

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:

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

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

Alterando o pager

\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)

\pset null '(null)'

Deixe um comentário