2.5. Criando um Novo Banco de Dados no PostgreSQL
Um mesmo servidor PostgreSQL pode gerenciar diversos bancos de dados (repositórios físicos de dados).
Durante a instalação do PostgreSQL é executado um programa chamado initdb
que realiza a criação de alguns bancos de dados fundamentais ao sistema:
template1
: Esse banco de dados é criado durante a preparação da área de armazenamento de um servidor PostgreSQL. Ele é usado como o molde (template
) padrão para criação de novos bancos, quando não indicamos um específico.template0
: Esse banco de dados contém exatamente as mesmas definições dotemplate1
e não deve ser alterado em hipótese alguma. Esse template é muito útil para restauração de backups criados com opg_dump
. Esse banco também deve ser usado como molde quando quisermos criar novos bancos com caracter encoding e locale diferentes do definido notemplate1
.postgres
: Esse banco de dados é criado na instalação do PostgreSQL e serve como o banco padrão para conexão de todos os usuários. Trat-se de uma cópia dotemplate1
.
Para criar um novo banco de dados precisamos estar conectados a algum banco. Em geral, nos conectamos ao baco denominado postgres
para esta finalidade. Além disso, precisamos usar um banco de molde (ou template) para realizar uma cópia física desse banco (clone). O banco de dados template1
pode ser usado para esta finalidade.
O comando SQL CREATE DATABASE
pode ser utilizado para criar um novo banco de dados:
CREATE DATABASE bdgeo TEMPLATE template1;
Nota
O comando acima permite utilizar qualquer banco de dados com template. A única restrição é que o banco utilizado como template não pode ter sessões ativas.
Nota
Em algumas instalações do PostgreSQL com o PostGIS, será criado um banco de dado template denominado template_postgis
, que já vem preparado com todo o suporte geoespacial.
Dica
A tabela do catálogo do sistema chamada pg_database
contém a lista de bancos de dados existentes no cluster PostgreSQL:
SELECT datname FROM pg_database;
De maneira similar, o meta-comando \l
no psql
fornece uma listagem dos bancos de dados existentes.