Pular para o conteúdo principal

INSERT INTO em Snowflake: Um guia completo para iniciantes

Saiba como inserir dados com eficiência nas tabelas do Snowflake usando a instrução INSERT INTO. Este guia aborda a sintaxe, os casos de uso, as práticas recomendadas e as técnicas de solução de problemas.
Atualizado 17 de jun. de 2025  · 6 min lido

Ao trabalhar com o Snowflake, uma das operações fundamentais que você realizará é a inserção de dados em tabelas. A instrução INSERT INTO permite que você adicione novos registros a uma tabela, seja inserindo valores manualmente, inserindo várias linhas ou extraindo dados de outras tabelas.

Neste guia, orientarei você sobre a sintaxe, os vários casos de uso, as práticas recomendadas e as etapas comuns de solução de problemas para usar o INSERT INTO de forma eficaz no Snowflake.

O que é o comando INSERT INTO no Snowflake?

Antes de discutir a sintaxe, precisamos primeiro entender a finalidade do INSERT INTO no Snowflake e seus diferentes casos de uso. 

A adição de dados a um banco de dados é uma parte essencial do gerenciamento de um banco de dados. A instrução INSERT INTO no Snowflake é usada para adicionar novas linhas de dados a uma tabela. Você pode inserir linhas únicas, várias linhas ou dados em massa de outra tabela. Você pode inserir dados digitando manualmente cada valor de uma determinada linha ou conjunto de linhas, ou usar uma instrução SQL para carregar dados em massa de outras fontes de dados.

> Embora INSERT INTO seja um comando fundamental, garantir que você entenda o Snowflake e sua arquitetura é um ótimo ponto de partida. Consulte teste tutorial sobre Snowflake para que você aprenda os fundamentos!

Casos de uso para INSERT INTO

Aqui estão alguns dos casos de uso comuns da cláusula INSERT INTO

  • Adicionando novos registros manualmente a uma tabela.
  • Inserção em massa de várias linhas em uma única consulta.
  • Transferência de dados de uma tabela para outra.
  • Anexar novos dados a um conjunto de dados existente.
  • Preenchendo uma tabela com os resultados de uma consulta em SELECT.

> Aprender essa cláusula é ótimo para entrevistas com o Snowflake.Você também pode aprender essa cláusula para as entrevistas com Snowflake!

Sintaxe do INSERT INTO no Snowflake

Agora vamos entrar na sintaxe real. Vamos primeiro discutir o uso mais simples do INSERT INTO: simplesmente adicionar dados a uma linha inserindo manualmente os valores.

A sintaxe básica do site INSERT INTO é a seguinte:

INSERT INTO table_name (column1, column2, column3)
VALUES (value1, value2, value3);

Você escreve a cláusula INSERT INTO seguida de table_name, que é onde estamos inserindo os dados. Para ser específico quanto à ordem dos dados, podemos especificar os nomes das colunas que seguem entre parênteses como (column1, column2, column3). A parte final é escrever o VALUES (value1, value2, value3), que será inserido nas respectivas colunas.

Inserção de dados sem especificar nomes de colunas

Se você omitir os nomes das colunas, o Snowflake assumirá que os valores são fornecidos na mesma ordem do esquema da tabela. Ou seja, o primeiro valor será considerado como sendo da primeira coluna da tabela, e assim por diante.

INSERT INTO table_name
VALUES (value1, value2, value3);

Com essa abordagem, você deve certificar-se de que os valores estejam na mesma ordem das colunas, ou poderá ter problemas com tipos de dados ou consistência de dados.

Uso avançado do INSERT INTO no Snowflake

Alguns dos usos mais avançados do site INSERT INTO incluem a inserção de uma única linha de uma tabela diferente, a inserção de várias linhas ou a inserção de dados com condições. Essa é uma maneira útil de adicionar dados a uma tabela ou arquivar dados em uma tabela separada.

Usando INSERT INTO com várias linhas

Em vez de inserir uma linha de cada vez, você pode inserir várias linhas em um único comando:

INSERT INTO employees (id, name, department)
VALUES
    (1, 'Alice', 'HR'),
    (2, 'Bob', 'Finance'),
    (3, 'Charlie', 'IT');

Essa abordagem reduz a sobrecarga de execução de consultas e melhora o desempenho. Observe que cada linha é totalmente delimitada por um conjunto de parênteses e seguida por uma vírgula. Se você não fizer isso, poderá cometer erros. 

Inserindo dados de outra tabela

Para copiar dados de uma tabela para outra, use INSERT INTO com uma instrução SELECT:

INSERT INTO target_table (column1, column2)

SELECT
column1, 
column2 
FROM source_table ;

Isso é útil para arquivar dados, transformar dados antes da inserção ou anexar registros filtrados. Se os dados de origem estiverem na mesma ordem de coluna que o destino, você poderá omitir a nomeação das colunas ao lado de target_table.

Inserções condicionais

Você pode inserir dados com base em uma condição na instrução SELECT, portanto, não está copiando uma tabela inteira.

INSERT INTO high_salary_employees (id, name, salary)

SELECT 
id, 
name, 
salary
FROM employees 
WHERE salary > 100000;

Isso garante que somente os funcionários que atendem à condição sejam inseridos na nova tabela. Isso ajuda a manter a integridade dos dados e reduz o armazenamento e a sobrecarga computacional.

Práticas recomendadas para usar o INSERT INTO no Snowflake

Aqui estão algumas práticas recomendadas para você usar o INSERT INTO no Snowflake. Isso inclui o uso de instruções mais eficientes, como MERGE e a validação de dados antes da inserção.

Usando MERGE em vez de INSERT INTO para upserts

Se você precisar inserir novos registros, mas atualizar os existentes, o site MERGE é uma opção melhor porque pode corresponder aos dados existentes. 

Ele procura onde as linhas atuais atendem a um determinado critério (por exemplo, um ID de funcionário existente) e pode atualizar valores específicos na tabela de destino usando uma tabela de origem. Quando não houver correspondência, ele inserirá os novos dados. Esse é um conceito conhecido como "upsert" (atualização e inserção). 

Veja abaixo um exemplo de como você pode usar MERGE:

MERGE INTO target_table AS t
USING source_table AS s
ON t.id = s.id
WHEN MATCHED THEN
    UPDATE SET t.salary = s.salary
WHEN NOT MATCHED THEN
    INSERT (id, name, salary) VALUES (s.id, s.name, s.salary);

> A declaração MERGE está se tornando rapidamente um procedimento padrão e é uma parte fundamental das certificações da Snowflake.ey parte das certificações Snowflake.

Inserções em lote e desempenho

Para melhorar o desempenho ao inserir grandes conjuntos de dados, tente se concentrar na realização de inserções em lote. Isso reduz a sobrecarga, pois você não precisa iniciar novas conexões a cada carga e melhora o desempenho geral. Aqui estão algumas dicas para a inserção em lote:

  • Use inserções em massa em vez de inserir linha por linha.
  • Use o site COPY INTO ao carregar dados grandes de fontes externas. Isso é útil quando você se conecta a algo como o S3.
  • Evite inserir dados dentro de loops em scripts; o processamento em lote é mais eficiente. Portanto, termine o loop, armazene os dados como uma única fonte de dados e, em seguida, carregue toda essa fonte de dados de uma só vez.

Validação de dados antes da inserção

Antes de inserir dados, valide-os. Se os dados não forem validados, isso pode causar muitos problemas ou até mesmo o fracasso total. Pense em como os dados podem ser usados downstream e como devem ser os dados inseridos. Aqui estão alguns aspectos importantes que você deve observar:

  • Os tipos de dados correspondem às definições de coluna.
  • Os campos obrigatórios não são nulos.
  • Não há chaves primárias duplicadas ou violações de restrições exclusivas.

Tratamento de erros com INSERT INTO no Snowflake

Conforme mencionado anteriormente, pode ocorrer um erro ocasional ao inserir dados. Aqui estão alguns conselhos sobre como lidar com erros comuns. 

Como lidar com chaves duplicadas

O próprio Snowflake não impõe necessariamente restrições exclusivas, o que significa que é possível inserir dados duplicados. 

Se você estiver preocupado com chaves duplicadas, talvez seja melhor considerar o manuseio com MERGE ou ON CONFLICT (se houver suporte). Por fim, você também pode adicionar uma condição à sua inserção usando WHERE para excluir qualquer coisa existente na tabela de destino.

INSERT INTO employees (id, name)
SELECT id, name FROM new_employees
WHERE id NOT IN (SELECT id FROM employees);

Manipulação de valores NULL

Certifique-se de que as colunas anuláveis permitam valores NULL ou forneçam valores padrão. O Snowflake impõe qualquer restrição de coluna NOT NULL, portanto, se você tiver dados NULL em uma coluna com essa restrição, sua inserção falhará. O mais importante aqui é entender seus dados, onde é permitido que existam NULLs e onde eles não são permitidos.

Solução de problemas comuns com INSERT INTO

Alguns outros problemas podem se resumir a tipos de dados ou problemas de permissões. Discutiremos brevemente como lidar com esses problemas.

Incompatibilidades de tipos de dados

Ocorrem erros ao inserir um valor do tipo de dados errado. Às vezes, você pode lidar com isso usando a conversão de tipo dos dados, mas isso pode levar a NULLs. Para garantir que os dados inseridos sejam iguais aos do destino, você pode tentar acessar o site information_schema (onde você tem permissões) e avaliar o esquema dessa forma:

SELECT column_name, 
data_type
 FROM information_schema.columns 
WHERE table_name = 'employees';

Problemas de permissões

Se você receber um erro de permissão, verifique as funções e os privilégios do usuário:

SHOW GRANTS TO USER current_user;

Se você não tiver permissão para usar o site INSERT, consulte o seu gerente, o departamento de TI ou o proprietário do conjunto de dados. Se você conseguir conceder permissões a si mesmo, use o código a seguir:

GRANT INSERT ON TABLE employees TO user_name;

Conclusão

O comando INSERT INTO no Snowflake é uma ferramenta poderosa para você adicionar dados às tabelas com eficiência. Se você estiver inserindo linhas únicas, dados em massa ou copiando de outra tabela, entender sua sintaxe e as práticas recomendadas garante a integridade e o desempenho dos dados. Você pode manter um banco de dados Snowflake robusto e eficiente ao lidar com erros, validar dados e otimizar inserções. 

Para saber mais sobre o Snowflake, recomendo que você dê uma olhada nos seguintes cursos:

Perguntas frequentes

Qual é a diferença entre INSERT INTO e COPY INTO no Snowflake?

INSERT INTO é usado para inserir linhas específicas de dados, enquanto o COPY INTO é otimizado para carregar grandes conjuntos de dados em massa de fontes externas, como o AWS S3 ou o Azure Blob Storage.

O INSERT INTO é compatível com transações no Snowflake?

Sim, o Snowflake oferece suporte a transações, portanto, você pode usar BEGIN, COMMIT e ROLLBACK para garantir a integridade dos dados ao inseri-los.

Quais são as práticas recomendadas de desempenho ao inserir grandes quantidades de dados?

Use inserções em lote em vez de inserir linha por linha, aproveite o site COPY INTO para cargas em massa e evite índices desnecessários que podem reduzir o desempenho da inserção.

Você pode INSERIR em uma visualização segura no Snowflake?

Não. As visualizações - inclusive as visualizações seguras - são tabelas virtuais e não podem ser gravadas diretamente. Você deve inserir na tabela base subjacente ou usar uma tabela de preparação transitória e, em seguida, recriar ou atualizar a visualização.

Como faço para inserir dados JSON em uma coluna VARIANT?

Coloque o JSON entre aspas simples e converta-o para VARIANT, por exemplo , INSERT INTO t (payload) VALUES (PARSE_JSON('{\"key\":\"value\"}')); . O Snowflake preserva automaticamente o formato semiestruturado para que você possa fazer consultas posteriormente.

Qual é a maneira mais rápida de desfazer um INSERT INTO acidental?

Aproveite a viagem no tempo para restaurar a tabela para um ponto anterior à inserção: CREATE OR REPLACE TABLE my_table AS SELECT * FROM my_table AT (TIMESTAMP => '2025-06-17 09:00:00');. Isso evita as instruções manuais DELETE e preserva o agrupamento.

O INSERT INTO cria automaticamente micropartições?

Sim. Toda operação DML (inclusive inserções) aciona o mecanismo de microparticionamento do Snowflake, que organiza os dados para poda e compactação. Você não precisa gerenciar as partições manualmente.

Como o clustering afeta o desempenho do INSERT?

As chaves de agrupamento ajudam na velocidade da consulta, mas adicionam sobrecarga às gravações. As inserções frequentes em uma tabela muito clusterizada podem ser mais lentas, portanto, escolha cuidadosamente as chaves de clusterização e, se possível, faça a clusterização fora dos horários de pico.

Posso usar o INSERT INTO com o Snowpipe?

Indiretamente. O Snowpipe ingere arquivos em uma tabela de preparação; você pode então INSERT INTO tabelas analíticas após as transformações. Para carregamento contínuo, combine o Snowpipe com fluxos e tarefas em vez de inserções manuais.

Quantos dados posso inserir em um único comando?

O Snowflake oferece suporte a operações muito grandes - multiterabytes na prática - porque divide o trabalho em microlotes. INSERT INTO … SELECT operações muito grandes - multiterabytes na prática - porque divide o trabalho em micro-lotes. O principal limitador é o tamanho do warehouse e as configurações de tempo limite.

Quais privilégios de função são necessários para INSERTAR em bancos de dados compartilhados?

A função deve ter o privilégio INSERT na tabela de destino em a conta do consumidor. Os compartilhamentos de dados são somente de leitura por padrão, portanto, você normalmente copia os dados para o seu próprio banco de dados gravável primeiro.

Como posso monitorar o tempo e o custo de execução do INSERT INTO?

Consultar aNa visualização QUERY_HISTORY, você verá as estatísticas de execução, o tamanho do warehouse e os créditos consumidos. Emparelhe com ACCOUNT_USAGE.QUERY_HISTORY para análise de tendências de longo prazo e otimização de custos.análise de tendências de longo prazo e otimização de custos.


Tim Lu's photo
Author
Tim Lu
LinkedIn

Sou um cientista de dados com experiência em análise espacial, machine learning e pipelines de dados. Trabalhei com GCP, Hadoop, Hive, Snowflake, Airflow e outros processos de engenharia/ciência de dados.

Tópicos

Você pode aprender mais sobre o Snowflake com estes cursos!

Curso

Introdução ao Snowflake SQL

2 h
36.9K
Aprenda desde os fundamentos do Snowflake até as técnicas avançadas de SnowSQL neste curso completo.
Ver detalhesRight Arrow
Iniciar curso
Ver maisRight Arrow
Relacionado

Tutorial

Tutorial do Insert Into SQL

A instrução "INSERT INTO" do SQL pode ser usada para adicionar linhas de dados a uma tabela no banco de dados.
DataCamp Team's photo

DataCamp Team

Tutorial

Tutorial do MySQL: Um guia abrangente para iniciantes

Descubra o que é o MySQL e como começar a usar um dos sistemas de gerenciamento de banco de dados mais populares.
Javier Canales Luna's photo

Javier Canales Luna

Tutorial

Um guia completo para armazenamento de dados no AWS com o Redshift

Este guia do AWS Redshift abrange a configuração e o gerenciamento de um data warehouse na nuvem, o carregamento de dados, a execução de consultas complexas, a otimização do desempenho, a integração com ferramentas de BI e fornece práticas recomendadas e dicas de solução de problemas para que você tenha sucesso.
Zoumana Keita 's photo

Zoumana Keita

Tutorial

Introdução aos acionadores SQL: Um guia para desenvolvedores

Saiba como usar os acionadores SQL para automatizar tarefas, manter a integridade dos dados e melhorar o desempenho do banco de dados. Experimente exemplos práticos como os comandos CREATE, ALTER e DROP no MySQL e no Oracle.
Oluseye Jeremiah's photo

Oluseye Jeremiah

Tutorial

Tutorial de armazenamento do AWS: Uma introdução prática ao S3 e ao EFS

O guia completo para armazenamento de arquivos no AWS com S3 e EFS.
Zoumana Keita 's photo

Zoumana Keita

Tutorial

Tutorial de visão geral do banco de dados SQL

Neste tutorial, você aprenderá sobre bancos de dados em SQL.
DataCamp Team's photo

DataCamp Team

Ver maisVer mais