Resumo de comandos úteis do PostgreSQL

Resumo de comandos úteis do PostgreSQL

Introdução

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

Instalação

Versão 8.3 no Ubuntu 9.10

sudo aptitude install postgresql-8.3 postgresql-client-8.3 pgadmin3 pgadmin3-data postgresql-server-dev-8.3 libpostgresql-ocaml-dev

Versão 8.4 no Ubuntu 10.04

sudo aptitude install postgresql postgresql-contrib libpq-dev pgadmin3

Criando uma senha

sudo su postgres -c psql postgres
ALTER USER postgres WITH PASSWORD 'sua_senha';

Gerenciar bancos de dados

Criar uma base pelo terminal

createdb -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 base

pg_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

Exebir ‘(null)’ quando um campo for null

\pset null '(null)'

Veja mais configurações aqui.

  • Bacana a simplicidade que você abordou as operações básicas de um administrador pgsql. Mas veja se os exemplos de pg_dump não podem estar equivocados, pois o comando exibe o dump na saída padrão, ou seja, a tela. Desta forma, todas as opções não deveriam vir antes do ‘>’?

  • Eduardo,

    Isso funciona, mesmo passando parametros depois do ‘>’.
    Testei nas versões 8.3 e 8.4 e em ambas não tive problemas.

    Faz o teste aí e verifica se dá certo!

    Abraço!

  • Muito bom… Parabéns!!

  • Rodrigo

    Boa noite,

    Muito bom o post. Cara preciso de uma dica….

    Como faço para apagar todos os registros de uma determinada tabela no postgres? Via comando e pelo PGAdmin?

    Obrigado.

  • Gostaria de mais dicas, sou iniciante no trabalho com psg! Aceito dicas, sites, trabalhos, ideias, e etc…
    Peço a ajuda de todos! Desde já obrigado!

  • CR

    Como eu faço para abrir um banco que está em .rb no Pgadmin?

  • Monica

    Ola,

    Gostaria de saber como fazer restauro de um backup do sql server no postgresql.

    Obrigado
    Monica

  • Pedro Silva

    Amigo,
    Boa tarde, eu tenho um dúvida, se eu fizer um backup de uma base e levar para outro servidor, quando chegar lá é necessário criar essa base ou somente com o script seu de fazer restore de base, ele já cria e restaura a base? Queria entender esse passo.

  • lucascaton

    Fala Pedro!

    Você precisa recriar o banco antes de fazer o restore. Esse é o workflow:

    No servidor A:

    1) Faça um dump do banco;
    2) Copie o arquivo gerado (de preferência comprima ele com tar gz primeiro) para o servidor B;

    No servidor B:

    3) Crie o novo banco;
    4) Faça o restore utilizado o arquivo gerado no passo 1.

    Espero ter ajudado ツ
    Um abraço!

  • Pedro Silva

    Sim, eu entendi. Eu pergunto outra coisa: no outro servidor já existem essas bases, eu posso restaurar por cima ou tenho que dropar, criar e restaurar essas bases de outro servidor. A situação é atualizar as bases de produção no ambiente de homologação. Ok?

  • lucascaton

    Drop o banco antigo e cria / restaura de novo.
    Caso contrário pode ficar uma bagunça ツ

  • Pingback: Links Úteis - Daniel Rodrigues - Daniel Rodrigues()

Comments are closed.