Vai al contenuto principale

INSERT INTO in Snowflake: guida completa per principianti

Impara a inserire dati in modo efficiente nelle tabelle Snowflake usando l’istruzione INSERT INTO. La guida copre sintassi, casi d’uso, best practice e tecniche di troubleshooting.
Aggiornato 29 set 2026  · 6 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

Quando lavori con Snowflake, una delle operazioni fondamentali che eseguirai è l’inserimento di dati nelle tabelle. L’istruzione INSERT INTO ti consente di aggiungere nuovi record in una tabella, sia inserendo i valori manualmente, sia aggiungendo più righe, sia prelevando dati da altre tabelle.

In questa guida, ti mostrerò la sintassi, i vari casi d’uso, le best practice e i passaggi comuni di troubleshooting per usare INSERT INTO in modo efficace in Snowflake.

Che cos’è il comando INSERT INTO in Snowflake?

Prima di parlare della sintassi, dobbiamo capire lo scopo di INSERT INTO in Snowflake e i suoi diversi casi d’uso. 

Aggiungere dati a un database è una parte cruciale della sua gestione. L’istruzione INSERT INTO in Snowflake serve ad aggiungere nuove righe di dati in una tabella. Può inserire singole righe, più righe oppure dati in blocco da un’altra tabella. Puoi inserire i dati digitando manualmente ogni valore per una determinata riga o insieme di righe, oppure usare un’istruzione SQL per caricare in blocco dati da altre sorgenti.

> Anche se INSERT INTO è un comando fondamentale, partire con una buona comprensione di Snowflake e della sua architettura è un’ottima idea. Dai un’occhiata a questo tutorial su Snowflake per ripassare le basi!

Casi d’uso di INSERT INTO

Ecco alcuni casi d’uso comuni per la clausola INSERT INTO. 

  • Aggiunta manuale di nuovi record a una tabella.
  • Inserimento in blocco di più righe in un’unica query.
  • Trasferimento di dati da una tabella a un’altra.
  • Accodamento di nuovi dati a un dataset esistente.
  • Popolamento di una tabella con i risultati di una query SELECT.

> Imparare questa clausola è ottimo anche per i colloqui su Snowflake!

Sintassi di INSERT INTO in Snowflake

Passiamo ora alla sintassi vera e propria. Iniziamo dall’utilizzo più semplice di INSERT INTO: aggiungere dati a una riga inserendo manualmente i valori.

La sintassi di base per INSERT INTO è la seguente:

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

Scrivi la clausola INSERT INTO seguita da table_name, ossia la tabella in cui inserire i dati. Per essere esplicito sull’ordine dei dati, puoi specificare i nomi delle colonne tra parentesi come (column1, column2, column3). L’ultima parte è VALUES (value1, value2, value3), che verranno inseriti nelle rispettive colonne.

Inserire dati senza specificare i nomi delle colonne

Se ometti i nomi delle colonne, Snowflake presume che i valori siano forniti nello stesso ordine dello schema della tabella. In altre parole, il primo valore sarà considerato per la prima colonna della tabella, e così via.

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

Con questo approccio, devi assicurarti che i valori seguano lo stesso ordine delle colonne, altrimenti potresti incorrere in problemi di tipi di dato o di coerenza dei dati.

Uso avanzato di INSERT INTO in Snowflake

Alcuni usi più avanzati di INSERT INTO includono l’inserimento di una singola riga da una tabella diversa, l’inserimento di più righe o l’inserimento di dati con condizioni. È un modo utile per aggiungere dati a una tabella o archiviare dati in una tabella separata.

Usare INSERT INTO con più righe

Invece di inserire una riga alla volta, puoi inserire più righe in un’unica istruzione:

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

Questo approccio riduce il sovraccarico di esecuzione della query e migliora le prestazioni. Nota che ogni riga è completamente racchiusa tra parentesi ed è seguita da una virgola. Non farlo può portare a errori. 

Inserire dati da un’altra tabella

Per copiare dati da una tabella a un’altra, usa INSERT INTO con un’istruzione SELECT:

INSERT INTO target_table (column1, column2)

SELECT
column1, 
column2 
FROM source_table ;

Questo è utile per archiviare dati, trasformarli prima dell’inserimento o accodare record filtrati. Se i dati di origine hanno lo stesso ordine di colonne della destinazione, puoi omettere l’elenco delle colonne accanto a target_table.

Insert condizionali

Puoi inserire dati in base a una condizione nella tua istruzione SELECT, così da non copiare un’intera tabella.

INSERT INTO high_salary_employees (id, name, salary)

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

In questo modo solo i dipendenti che soddisfano la condizione vengono inseriti nella nuova tabella. Così si mantiene l’integrità dei dati e si riducono l’uso di spazio e il carico computazionale.

Best practice per usare INSERT INTO in Snowflake

Ecco alcune best practice quando usi INSERT INTO in Snowflake. Includono l’uso di istruzioni più efficienti come MERGE e la validazione dei dati prima dell’inserimento.

Usare MERGE invece di INSERT INTO per gli upsert

Se devi inserire nuovi record ma aggiornare quelli esistenti, MERGE è un’opzione migliore perché può confrontare i dati esistenti. 

Cerca dove le righe correnti soddisfano un certo criterio (ad esempio, un ID dipendente esistente) e può aggiornare valori specifici nella tabella di destinazione usando una tabella di origine. Quando non c’è corrispondenza, inserisce i nuovi dati. Questo concetto è noto come “upsert” (update e insert). 

Di seguito un esempio di come usare 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);

> L’istruzione MERGE sta diventando rapidamente una procedura standard ed è un elemento chiave delle certificazioni Snowflake.

Insert in batch e prestazioni

Per migliorare le prestazioni quando inserisci dataset di grandi dimensioni, prova a concentrarti sugli insert in batch. Questo riduce il sovraccarico evitando di attivare nuove connessioni a ogni caricamento e migliora le prestazioni complessive. Ecco alcuni consigli per l’inserimento in batch:

  • Usa insert in blocco invece di inserire riga per riga.
  • Usa COPY INTO quando carichi grandi quantità di dati da sorgenti esterne. È utile, ad esempio, quando ti connetti a S3.
  • Evita di inserire dati all’interno di loop negli script; l’elaborazione in batch è più efficiente. Quindi completa il loop, conserva i dati come un’unica sorgente e poi carica l’intera sorgente in una volta sola.

Validazione dei dati prima dell’inserimento

Prima di inserire i dati, validali. Se i dati non sono validi, possono causare molti problemi o fallimenti veri e propri. Pensa a come i dati potrebbero essere utilizzati a valle e a come dovrebbero presentarsi quelli inseriti. Ecco alcuni aspetti chiave a cui prestare attenzione:

  • I tipi di dato corrispondono alle definizioni delle colonne.
  • I campi obbligatori non sono null.
  • Nessuna violazione di chiavi primarie duplicate o di vincoli univoci.

Gestione degli errori con INSERT INTO in Snowflake

Come detto, può capitare qualche errore durante l’inserimento dei dati. Ecco alcuni consigli su come gestire gli errori più comuni. 

Gestire le chiavi duplicate

Snowflake di per sé non applica necessariamente i vincoli univoci, il che significa che è possibile inserire dati duplicati. 

Se temi chiavi duplicate, può essere meglio gestirle con MERGE o ON CONFLICT (se supportato). In ultima analisi, puoi anche aggiungere una condizione al tuo insert usando WHERE per escludere ciò che esiste già nella tabella di destinazione.

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

Gestione dei valori NULL

Assicurati che le colonne nullable accettino valori NULL o fornisci valori predefiniti. Snowflake applica i vincoli NOT NULL sulle colonne, quindi se hai dati NULL in una colonna con quel vincolo, l’inserimento fallirà. La cosa più importante è comprendere i tuoi dati: dove i NULL possono esistere e dove no.

Risoluzione dei problemi comuni con INSERT INTO

Altri problemi possono riguardare i tipi di dato o i permessi. Vediamo brevemente come affrontarli.

Incongruenze di tipo di dato

Gli errori si verificano quando si inserisce un valore con un tipo di dato errato. A volte puoi gestirlo facendo il cast dei dati, ma questo può generare NULL. Per assicurarti che i dati inseriti corrispondano alla destinazione, puoi consultare information_schema (dove hai i permessi) e valutare in quel modo lo schema:

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

Problemi di permessi

Se ricevi un errore di permesso, verifica i ruoli utente e le relative autorizzazioni:

SHOW GRANTS TO USER current_user;

Se non hai il permesso di usare INSERT, verifica con il tuo responsabile, il reparto IT o con il proprietario del dataset. Se puoi concederti i permessi, usa il seguente codice:

GRANT INSERT ON TABLE employees TO user_name;

Conclusione

Il comando INSERT INTO in Snowflake è uno strumento potente per aggiungere dati alle tabelle in modo efficiente. Che si tratti di inserire singole righe, dati in blocco o copiare da un’altra tabella, comprenderne la sintassi e le best practice garantisce integrità e prestazioni dei dati. Gestendo gli errori, convalidando i dati e ottimizzando gli insert, puoi mantenere un database Snowflake robusto ed efficiente. 

Per saperne di più su Snowflake, ti consiglio i seguenti corsi:

FAQs

Qual è la differenza tra INSERT INTO e COPY INTO in Snowflake?

INSERT INTO si usa per inserire righe specifiche di dati, mentre COPY INTO è ottimizzato per il caricamento in blocco di grandi dataset da sorgenti esterne come AWS S3 o Azure Blob Storage.

INSERT INTO supporta le transazioni in Snowflake?

Sì, Snowflake supporta le transazioni, quindi puoi usare BEGIN, COMMIT e ROLLBACK per garantire l’integrità dei dati durante l’inserimento.

Quali sono le best practice prestazionali quando si inseriscono grandi quantità di dati?

Usa insert in batch invece di inserire riga per riga, sfrutta COPY INTO per i caricamenti in blocco ed evita indici non necessari che possono rallentare le prestazioni in inserimento.

Posso eseguire INSERT INTO su una secure view in Snowflake?

No. Le view—incluse le secure view—sono tabelle virtuali e non possono essere scritte direttamente. Devi inserire nella tabella di base sottostante o usare una tabella di staging transitoria, quindi ricreare o aggiornare la view.

Come inserisco dati JSON in una colonna VARIANT?

Racchiudi il JSON tra apici singoli ed esegui il cast a VARIANT, ad es. INSERT INTO t (payload) VALUES (PARSE_JSON('{\"key\":\"value\"}'));. Snowflake preserva automaticamente il formato semi‑strutturato per le query successive.

Qual è il modo più rapido per annullare un INSERT INTO accidentale?

Sfrutta il Time Travel per ripristinare la tabella a un punto precedente all’inserimento: CREATE OR REPLACE TABLE my_table AS SELECT * FROM my_table AT (TIMESTAMP => '2025-06-17 09:00:00');. Evita così istruzioni DELETE manuali e preservi il clustering.

INSERT INTO crea automaticamente micro‑partizioni?

Sì. Ogni operazione DML (inclusi gli insert) attiva il motore di micro‑partizionamento di Snowflake, che organizza i dati per pruning e compressione. Non devi gestire manualmente le partizioni.

In che modo il clustering influisce sulle prestazioni di INSERT?

Le chiavi di clustering aiutano la velocità delle query ma aggiungono overhead in scrittura. Insert frequenti su una tabella fortemente clusterizzata possono essere più lenti, quindi scegli le chiavi con attenzione e, se possibile, esegui il reclustering nelle ore di minor carico.

Posso usare INSERT INTO con Snowpipe?

Indirectamente. Snowpipe acquisisce i file in una tabella di staging; puoi quindi INSERT INTO le tabelle analitiche dopo le trasformazioni. Per il caricamento continuo, combina Snowpipe con stream e task invece degli insert manuali.

Quanti dati posso inserire in un’unica istruzione?

Snowflake supporta operazioni INSERT INTO … SELECT molto grandi—nella pratica, multi‑terabyte—perché suddivide il lavoro in micro‑batch. I principali limiti sono la dimensione del warehouse e le impostazioni di timeout.

Quali privilegi di ruolo servono per eseguire INSERT INTO su database condivisi?

Il ruolo deve avere il privilegio INSERT sulla tabella di destinazione all’interno dell’account consumer. I data share sono in sola lettura per impostazione predefinita, quindi in genere copi prima i dati in un tuo database scrivibile.

Come monitoro il tempo di esecuzione e il costo di INSERT INTO?

Interroga la vista QUERY_HISTORY per statistiche di esecuzione, dimensione del warehouse e crediti consumati. Abbinala a ACCOUNT_USAGE.QUERY_HISTORY per l’analisi di lungo periodo e l’ottimizzazione dei costi.


Tim Lu's photo
Author
Tim Lu
LinkedIn

Sono una data scientist con esperienza in analisi spaziale, machine learning e pipeline dei dati. Ho lavorato con GCP, Hadoop, Hive, Snowflake, Airflow e altri processi di data science/engineering.

Argomenti
Snowflake
Cloud

Approfondisci Snowflake con questi corsi!

Corso

Introduzione a Snowflake

2 ore
49.9K
Snowflake è una piattaforma leader per il data warehousing. Scopri come usare Snowsight, un'interfaccia SQL intuitiva per accedere ed esplorare i dati.
Vedi i dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
Correlato

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

Mostra AltroMostra Altro