O comando INSERT é usado para inserir linhas na
tabela:
INSERT INTO clima
VALUES ('Salvador - BA', 21, 28, 3.4, '2022-06-25');
Repare que todos os tipos de dados possuem formato de entrada de dados
bastante óbvios. As constantes que não são valores numéricos simples,
geralmente devem estar entre apóstrofos ('), como
no exemplo acima. O tipo date é, na verdade, muito
flexível em relação ao que aceita, mas para esse tutorial vamos nos
fixar no formato sem ambiguidade mostrado acima.
[7]
O tipo point requer um par de coordenadas como entrada,
conforme mostrado abaixo:
INSERT INTO cidades
VALUES ('Salvador - BA', '(-38.48806, -13.01477)');
A sintaxe usada até agora requer que seja lembrada a ordem das colunas. Uma sintaxe alternativa permite declarar as colunas explicitamente:
INSERT INTO clima (data, cidade, temp_min, temp_max, prcp)
VALUES ('2022-06-26', 'Salvador - BA', 23, 27, 0);
Você pode listar as colunas em uma ordem diferente se desejar, ou até mesmo omitir algumas colunas, por exemplo, se a precipitação for desconhecida:
INSERT INTO clima (data, cidade, temp_min, temp_max)
VALUES ('2022-06-29', 'Rio de Janeiro - RJ', 17, 29);
Muitos desenvolvedores consideram que declarar explicitamente as colunas é um estilo melhor que confiar na ordem implícita.
Por favor, entre todos os comandos mostrados acima para ter alguns dados para trabalhar nas próximas seções.
Também pode ser utilizado o comando COPY para
carregar uma grande quantidade de dados a partir de arquivos de
texto. Geralmente é mais rápido, porque o comando
COPY é otimizado para essa finalidade, embora
possua menos flexibilidade que o comando INSERT.
Como exemplo poderíamos ter:
meu_bd=> COPY clima FROM '/home/user/clima.txt';
onde o arquivo contendo os dados deve estar disponível para a máquina servidora, e não para a estação cliente, porque o servidor lê o arquivo diretamente. Os dados inseridos acima na tabela meteorológica também poderiam ser inseridos a partir de um arquivo contendo (os valores são separados por um caractere de tabulação):
Salvador - BA 21 28 3.4 2022-06-25 Salvador - BA 23 27 0 2022-06-26 Rio de Janeiro - RJ 17 29 \N 2022-06-29
Podem ser obtidas mais informações sobre este comando em COPY. [8]
[8]
DETALHE: Somente as funções de banco de dados (roles)
com os privilégios da função de banco de dados "pg_read_server_files" podem executar
o comando COPY para um arquivo;
DICA: Qualquer um pode utilizar o comando COPY para a saída
stdout ou para a entrada padrão.
O comando \copy do psql funciona para
qualquer usuário. (Ex: meu_bd=> \copy clima FROM '~/Trash/clima.txt');
(N. T.)