INSERT - Amazon Redshift

INSERT

Insere novas linhas em uma tabela, Você pode inserir uma única linha com a sintaxe VALUES, várias linhas com a sintaxe VALUES, ou uma ou mais linhas definidas pelos resultados de uma consulta (INSERT INTO...SELECT).

nota

Recomendamos veementemente o uso do comando COPY para carregar grandes quantidades de dados. O uso de instruções INSERT individuais para povoar uma tabela pode ser proibitivamente lento. Como alternativa, se seus dados já existirem em outras tabelas de banco de dados do Amazon Redshift, use INSERT INTO SELECT ou CREATE TABLE AS para melhorar a performance. Para obter mais informações sobre o uso do comando COPY para carregar tabelas, consulte Carregamento de dados.

nota

O tamanho máximo de uma única instrução SQL é 16 MB.

Sintaxe

INSERT INTO table_name [ ( column [, ...] ) ] {DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) [, ( { expression | DEFAULT } [, ...] ) [, ...] ] | query }

Parâmetros

table_name

Uma tabela temporária ou persistente. Somente o proprietário da tabela ou um usuário com o privilégio INSERT na tabela pode inserir linhas. Se usar a cláusula de consulta para inserir linhas, você deve ter o privilégio SELECT nas tabelas mencionadas na consulta.

nota

Use INSERT (tabela externa) para inserir resultados de uma consulta SELECT em tabelas existentes no catálogo externo. Para obter mais informações, consulte INSERT (tabela externa).

coluna

Você pode inserir valores em uma ou mais colunas da tabela. Você pode listar os nomes de colunas de destino em qualquer ordem. Se você não especificar uma lista de colunas, os valores a serem inseridos deverão corresponder a colunas de tabela na ordem em que foram declaradas na instrução CREATE TABLE. Se o número de valores a serem inseridos for menor do que o número de colunas na tabela, as primeiras n colunas serão carregadas.

O valor padrão declarado ou um valor nulo é carregado em qualquer coluna que não esteja listada (implícita ou explicitamente) na instrução INSERT.

DEFAULT VALUES

Se, durante a criação da tabela, tiverem sido atribuídos valores padrão às colunas na tabela, use essas palavras-chave para inserir uma linha que consista totalmente em valores padrão. Se alguma coluna não tiver valores padrão, valores nulos serão inseridos nela. Se qualquer uma das colunas for declarada NOT NULL, a instrução INSERT retornará um erro.

VALUES

Use esta palavra-chave para inserir uma ou mais linhas, cada linha consistindo em um ou mais valores. A lista VALUES de cada linha deve estar alinhada com a lista de colunas. Para inserir várias linhas, use um delimitador de vírgula entre cada lista de expressões. Não repita a palavra-chave VALUES. Todas as listas VALUES para uma instrução INSERT de várias linhas devem conter o mesmo número de valores.

expressão

Um único valor ou uma expressão que avalia um único valor. Cada valor deve ser compatível com o tipo de dados da coluna em que está sendo inserido. Se possível, um valor cujo tipo de dados não corresponde ao tipo de dados declarado da coluna será convertido automaticamente em um tipo de dados compatível. Por exemplo:

  • Um valor decimal 1.1 é inserido em uma coluna INT como 1.

  • Um valor decimal 100.8976 é inserido em uma coluna DEC(5,2) como 100.90.

Você pode converter explicitamente um valor em um tipo de dados compatível incluindo o tipo de sintaxe cast na expressão. Por exemplo, se a coluna COL1 na tabela T1 for uma coluna CHAR(3):

insert into t1(col1) values('Incomplete'::char(3));

Esta instrução insere o valor Inc na coluna.

Para uma instrução INSERT VALUES de linha única, você pode usar uma subconsulta escalar como uma expressão. O resultado da subconsulta é inserido na coluna apropriada.

nota

Subconsultas não são compatíveis como expressões para instruções INSERT VALUES de várias linhas.

DEFAULT

Use esta palavra-chave para inserir o valor padrão de uma coluna, como definido quando a tabela foi criada. Se não existir um valor padrão para uma coluna, um valor "null" será inserido. Você não poderá inserir um valor padrão em uma coluna com restrição NOT NULL se a coluna não tiver um valor padrão explícito atribuído a ela na instrução CREATE TABLE.

query

Insira uma ou mais linhas na tabela definindo qualquer consulta. Todas as linhas que a consulta produz são inseridas na tabela. A consulta deve retornar uma lista de colunas compatíveis com as colunas na tabela, mas os nomes das colunas não precisam obrigatoriamente corresponder.

Observações de uso

nota

Recomendamos veementemente o uso do comando COPY para carregar grandes quantidades de dados. O uso de instruções INSERT individuais para povoar uma tabela pode ser proibitivamente lento. Como alternativa, se seus dados já existirem em outras tabelas de banco de dados do Amazon Redshift, use INSERT INTO SELECT ou CREATE TABLE AS para melhorar a performance. Para obter mais informações sobre o uso do comando COPY para carregar tabelas, consulte Carregamento de dados.

O formato de dados dos valores inseridos deve corresponder ao formato de dados especificado pela definição de CREATE TABLE.

Depois de inserir um grande número de linhas novas em uma tabela:

  • Limpe a tabela para recuperar espaço e reclassificar as linhas.

  • Analise a tabela para atualizar as estatísticas do planejador de consulta.

Quando os valores são inseridos em colunas DECIMAIS e ultrapassam a escala especificada, os valores carregados são arredondados para cima, conforme apropriado. Por exemplo, quando um valor 20.259 é inserido em uma coluna DECIMAL(8,2), o valor armazenado é 20.26.

É possível inserir uma coluna GENERATED BY DEFAULT AS IDENTITY. Você pode atualizar as colunas definidas como GENERATED BY DEFAULT AS IDENTITY com os valores fornecidos. Para obter mais informações, consulte GENERATED BY DEFAULT AS IDENTITY.