Como criar um banco de dados usando uma interface de linha de comando (CLI)?
Ao criar bancos de dados, você pode especificar um banco de dados de modelo e definir diferentes conjuntos de caracteres e agrupamentos para cada banco de dados.
Você pode se conectar à instância usando a janela de consulta do DAS, psql ou pgadmin. Esta seção usa a janela de consulta do DAS como um exemplo para descrever como criar um banco de dados usando o comando CREATE DATABASE.
As informações de agrupamento incluem LC_COLLATE e LC_CTYPE. Para mais detalhes, consulte a documentação oficial.
Sintaxe
CREATE DATABASE name [ [ WITH ] [ OWNER [=] user_name ] [ TEMPLATE [=] template ] [ ENCODING [=] encoding ] [ LC_COLLATE [=] lc_collate ] [ LC_CTYPE [=] lc_ctype ] [ TABLESPACE [=] tablespace_name ] [ ALLOW_CONNECTIONS [=] allowconn ] [ CONNECTION LIMIT [=] connlimit ] [ IS_TEMPLATE [=] istemplate ] ]
Procedimento
- Faça logon no console de gerenciamento.
- Clique em no canto superior esquerdo e selecione uma região e um projeto.
- Clique em no canto superior esquerdo da página e escolha Databases > Relational Database Service.
- Na página Instances, localize a instância de BD de destino e clique em Log In na coluna Operation.
Figura 1 Efetuar logon em uma instância
- Na página exibida, insira o nome de usuário e a senha e clique em Log In.
- Escolha SQL Operations > SQL Window.
- No console do DAS exibido, escolha SQL Operations > SQL Query. Execute o seguinte comando para criar um banco de dados:
create database Database name;
Descrição do parâmetro
- TEMPLATE
O RDS for PostgreSQL tem dois modelos de banco de dados: template0 e template1. O modelo padrão é template1. Quando você usa template1 para criar um banco de dados, não especifique um novo conjunto de caracteres para o banco de dados. Caso contrário, um erro será relatado. Você também pode especificar um modelo personalizado para criar um banco de dados.
- ENCODING
Ao criar um banco de dados, você pode especificar um conjunto de caracteres usando WITH ENCODING. Para obter detalhes sobre os conjuntos de caracteres suportados, consulte a documentação oficial.
- LC_COLLATE
Ordem de classificação da cadeia de caracteres. O valor padrão é en_US.utf8.
A comparação da mesma cadeia em diferentes agrupamentos pode ter resultados diferentes.
Por exemplo, depois de executar SELECT 'a'>'A';, o resultado será false se esse parâmetro for definido como en_US.utf8 e o resultado será true se esse parâmetro for definido como C. Se você precisar migrar um banco de dados do Oracle para o RDS for PostgreSQL, defina LC_COLLATE como C. Você pode consultar os agrupamentos suportados na tabela pg_collation.
- LC_CTYPE
Ele é usado para classificar se um caractere é um dígito, letra maiúscula, letra minúscula e assim por diante. Você pode consultar as classificações de caracteres suportadas na tabela pg_collation.
- Para obter detalhes sobre outros parâmetros, consulte a documentação oficial.
Como usar esses parâmetros
- Usar TEMPLATE para especificar um modelo de banco de dados
- Quando template1 é usado, o conjunto de caracteres ou agrupamento definido neste modelo não pode ser alterado. Para obter detalhes sobre agrupamentos, consulte Configuração do agrupamento de um banco de dados em uma localidade.
CREATE DATABASE my_db WITH TEMPLATE template1 ;
- Quando template0 é usado, você pode alterar o conjunto de caracteres e o agrupamento. Para obter detalhes, consulte Configuração do agrupamento de um banco de dados em uma localidade.
CREATE DATABASE my_db WITH ENCODING = 'UTF8' LC_COLLATE ='zh_CN.utf8' LC_CTYPE ='zh_CN.utf8' TEMPLATE = template0 ;
- Se nenhum modelo for especificado durante a criação do banco de dados, template1 será usado por padrão. Você também pode especificar um modelo personalizado para criar um banco de dados.
CREATE DATABASE my_db WITH TEMPLATE = mytemplate;
- Quando template1 é usado, o conjunto de caracteres ou agrupamento definido neste modelo não pode ser alterado. Para obter detalhes sobre agrupamentos, consulte Configuração do agrupamento de um banco de dados em uma localidade.
- Usar WITH ENCODING para especificar um conjunto de caracteres
CREATE DATABASE my_db WITH ENCODING 'UTF8';
- LC_COLLATE e LC_CTYPE
- Consultar conjuntos de caracteres (codificações) suportados por LC_COLLATE e LC_CTYPE
SELECT pg_encoding_to_char(collencoding) AS encoding,collname,collcollate AS "LC_COLLATE",collctype AS "LC_CTYPE" FROM pg_collation;
Se encoding estiver vazia, LC_COLLATE suportará todos os conjuntos de caracteres.
- Configurar o agrupamento de um banco de dados em um local
Execute o seguinte comando para criar um banco de dados com LC_COLLATE e LC_CTYPE definidos como zh_CN.utf8:
CREATE DATABASE my_db WITH ENCODING = 'UTF8' LC_COLLATE ='zh_CN.utf8' LC_CTYPE ='zh_CN.utf8' TEMPLATE = template0 ;
Se LC_COLLATE especificado for incompatível com o conjunto de caracteres, informações de erro semelhantes às seguintes serão exibidas:
- Os LC_COLLATE e LC_CTYPE especificados devem ser compatíveis com o conjunto de caracteres de destino. Caso contrário, um erro é relatado. Para obter detalhes, consulte Consulta de configurações de LC_COLLATE e LC_CTYPE suportadas por um conjunto de caracteres.
- As configurações de LC_COLLATE e LC_CTYPE de um banco de dados existente não podem ser alteradas executando a instrução ALTER DATABASE. Você pode alterá-las ao criar um novo banco de dados e, em seguida, importar seus dados para o novo banco de dados.
- Consultar conjuntos de caracteres (codificações) suportados por LC_COLLATE e LC_CTYPE