Ga naar hoofdinhoud

INSERT INTO in Snowflake: een complete gids voor beginners

Leer hoe je efficiënt data invoegt in Snowflake-tabellen met de instructie INSERT INTO. Deze gids behandelt syntax, use-cases, best practices en technieken voor probleemoplossing.
Bijgewerkt 2 okt 2026  · 6 min lezen

Verken met AI

ChatGPTClaudePerplexity

Wanneer je met Snowflake werkt, is een van de basisbewerkingen het invoegen van data in tabellen. Met de instructie INSERT INTO kun je nieuwe records aan een tabel toevoegen—of je nu handmatig waarden invoert, meerdere rijen in één keer toevoegt, of data uit andere tabellen haalt.

In deze gids neem ik je mee door de syntax, verschillende use-cases, best practices en veelvoorkomende stappen voor probleemoplossing om INSERT INTO effectief te gebruiken in Snowflake.

Wat is het commando INSERT INTO in Snowflake?

Voordat we de syntax bespreken, is het belangrijk om het doel van INSERT INTO in Snowflake en de verschillende use-cases te begrijpen. 

Data toevoegen aan een database is een cruciaal onderdeel van databasebeheer. De instructie INSERT INTO in Snowflake wordt gebruikt om nieuwe rijen data aan een tabel toe te voegen. Je kunt enkele rijen, meerdere rijen of bulkdata uit een andere tabel invoegen. Je kunt data invoegen door voor elke rij, of set rijen, handmatig waarden te typen, of een SQL-instructie gebruiken om data in bulk uit andere bronnen te laden.

> Hoewel INSERT INTO een fundamenteel commando is, is het begrijpen van Snowflake en de architectuur een goed startpunt. Bekijk deze tutorial over Snowflake om de basis op te frissen!

Use-cases voor INSERT INTO

Hier zijn enkele veelvoorkomende use-cases voor de INSERT INTO-clausule. 

  • Handmatig nieuwe records aan een tabel toevoegen.
  • In één query meerdere rijen in bulk invoegen.
  • Data van de ene tabel naar een andere overzetten.
  • Nieuwe data toevoegen aan een bestaande dataset.
  • Een tabel vullen met de resultaten van een SELECT-query.

> Deze clausule leren is ook handig voor Snowflake-sollicitaties!

Syntax van INSERT INTO in Snowflake

Nu gaan we de daadwerkelijke syntax in. Laten we eerst de meest rechttoe rechtaan manier van INSERT INTO bespreken: simpelweg data aan een rij toevoegen door de waarden handmatig in te voeren.

De basis-syntax voor INSERT INTO is als volgt:

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

Je schrijft de clausule INSERT INTO gevolgd door de table_name, de tabel waarin we de data invoegen. Om specifiek te zijn over de volgorde van de data, kunnen we de kolomnamen tussen haakjes opgeven als (column1, column2, column3). Het laatste deel is het schrijven van VALUES (value1, value2, value3), die in de respectieve kolommen worden ingevoegd.

Data invoegen zonder kolomnamen te specificeren

Als je kolomnamen weglaat, gaat Snowflake ervan uit dat de waarden in dezelfde volgorde worden aangeleverd als het schema van de tabel. Met andere woorden: de eerste waarde hoort bij de eerste kolom van de tabel, enzovoort.

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

Bij deze aanpak moet je ervoor zorgen dat de waarden in dezelfde volgorde staan als de kolommen, anders kun je problemen krijgen met datatypes of dataconsistentie.

Geavanceerd gebruik van INSERT INTO in Snowflake

Meer geavanceerde toepassingen van INSERT INTO zijn onder meer het invoegen van een enkele rij uit een andere tabel, het invoegen van meerdere rijen of het invoegen van data met voorwaarden. Dit is een handige manier om data aan een tabel toe te voegen of om data te archiveren in een aparte tabel.

INSERT INTO gebruiken met meerdere rijen

In plaats van één rij per keer in te voegen, kun je meerdere rijen in één statement toevoegen:

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

Deze aanpak vermindert de overhead van query-uitvoering en verbetert de prestaties. Let erop dat elke rij volledig wordt omsloten door een set haakjes en gevolgd wordt door een komma. Als je dit niet doet, kan dat tot fouten leiden. 

Data invoegen uit een andere tabel

Om data van de ene tabel naar de andere te kopiëren, gebruik je INSERT INTO met een SELECT-statement:

INSERT INTO target_table (column1, column2)

SELECT
column1, 
column2 
FROM source_table ;

Dit is handig voor het archiveren van data, het transformeren van data vóór invoeging of het toevoegen van gefilterde records. Als de brondata dezelfde kolomvolgorde heeft als het doel, dan kun je de kolomnamen naast de target_table weglaten.

Voorwaardelijke inserts

Je kunt data invoegen op basis van een voorwaarde in je SELECT-statement, zodat je niet een hele tabel kopieert.

INSERT INTO high_salary_employees (id, name, salary)

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

Dit zorgt ervoor dat alleen medewerkers die aan de voorwaarde voldoen in de nieuwe tabel worden ingevoegd. Zo help je dataintegriteit te behouden en verminder je opslag- en rekenoverhead.

Best practices voor het gebruik van INSERT INTO in Snowflake

Hier zijn enkele best practices bij het gebruik van INSERT INTO in Snowflake. Dit omvat het gebruik van efficiëntere statements zoals MERGE en het valideren van data vóór invoeging.

MERGE gebruiken in plaats van INSERT INTO voor upserts

Als je nieuwe records moet invoegen maar bestaande wilt bijwerken, is MERGE een betere optie omdat het bestaande data kan matchen. 

Het zoekt naar rijen die aan bepaalde criteria voldoen (bijvoorbeeld een bestaand werknemers-ID) en kan specifieke waarden in de doeltabel bijwerken met behulp van een brontabel. Wanneer er geen match is, voegt het de nieuwe data in. Dit staat bekend als een “upsert” (update en insert). 

Zie hieronder een voorbeeld van hoe je MERGE gebruikt:

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);

> De MERGE-instructie wordt snel standaardprocedure en is een belangrijk onderdeel van Snowflake-certificeringen.

Batchinserts en performance

Om de prestaties te verbeteren bij het invoegen van grote datasets, richt je op batchinserts. Dit vermindert de overhead doordat er niet voor elke load nieuwe verbindingen hoeven te worden opgezet en verbetert de algehele performance. Hier zijn enkele tips voor batchinserts:

  • Gebruik bulkinserts in plaats van rij voor rij in te voegen.
  • Gebruik COPY INTO bij het laden van grote datasets uit externe bronnen. Dit is handig bij een koppeling met bijvoorbeeld S3.
  • Vermijd het invoegen van data binnen loops in scripts; batchverwerking is efficiënter. Rond dus eerst de loop af, sla de data op als één gegevensbron en laad die volledige bron vervolgens in één keer.

Datavalidatie vóór invoegen

Valideer data voordat je deze invoegt. Het kan veel problemen veroorzaken, of zelfs tot volledige mislukking leiden, als je data niet is gevalideerd. Denk na over hoe de data downstream gebruikt kan worden en hoe je ingevoegde data eruit moet zien. Let op het volgende:

  • Datatypes komen overeen met de kolomdefinities.
  • Vereiste velden zijn niet null.
  • Geen dubbele primaire sleutels of schendingen van unieke constraints.

Foutafhandeling met INSERT INTO in Snowflake

Zoals gezegd kunnen er af en toe fouten optreden bij het invoegen van data. Hier is wat advies over hoe je met veelvoorkomende fouten omgaat. 

Omgaan met dubbele sleutels

Snowflake zelf handhaaft niet per se unieke constraints, wat betekent dat het mogelijk is om dubbele data in te voegen. 

Als je je zorgen maakt over dubbele sleutels, kun je dit beter afhandelen met MERGE of ON CONFLICT (indien ondersteund). Uiteindelijk kun je ook een voorwaarde aan je insert toevoegen met WHERE om alles wat al in de doeltabel bestaat, uit te sluiten.

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

Omgaan met NULL-waarden

Zorg ervoor dat kolommen die NULL toestaan dit ook daadwerkelijk toelaten of dat je standaardwaarden opgeeft. Snowflake handhaaft elke NOT NULL-kolomconstraint, dus als je NULL-data hebt in een kolom met die constraint, zal je insert mislukken. Het belangrijkste hier is je data begrijpen: waar NULLs mogen bestaan en waar niet.

Veelvoorkomende problemen met INSERT INTO oplossen

Andere problemen komen vaak neer op datatypes of permissies. We bespreken kort hoe je deze issues aanpakt.

Mismatch van datatypes

Fouten treden op wanneer je een waarde van het verkeerde datatype invoegt. Soms kun je dit oplossen door je data te casten, maar dat kan tot NULLs leiden. Om ervoor te zorgen dat je ingevoegde data overeenkomt met het doel, kun je kijken naar de information_schema (waar je permissies hebt) en zo je schema beoordelen:

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

Permissieproblemen

Als je een permissiefout krijgt, controleer dan de gebruikersrollen en privileges:

SHOW GRANTS TO USER current_user;

Als je geen permissie hebt om INSERT te gebruiken, overleg dan met je manager, je IT-afdeling of de eigenaar van de dataset. Als je jezelf permissies kunt geven, gebruik dan de volgende code:

GRANT INSERT ON TABLE employees TO user_name;

Conclusie

Het commando INSERT INTO in Snowflake is een krachtig hulpmiddel om efficiënt data aan tabellen toe te voegen. Of je nu enkele rijen, bulkdata of data uit een andere tabel invoegt, inzicht in de syntax en best practices zorgt voor dataintegriteit en goede prestaties. Door fouten af te handelen, data te valideren en inserts te optimaliseren, kun je een robuuste en efficiënte Snowflake-database onderhouden. 

Wil je meer leren over Snowflake, dan raad ik de volgende cursussen aan:

FAQs

Wat is het verschil tussen INSERT INTO en COPY INTO in Snowflake?

INSERT INTO wordt gebruikt om specifieke rijen data in te voegen, terwijl COPY INTO is geoptimaliseerd voor het in bulk laden van grote datasets uit externe bronnen zoals AWS S3 of Azure Blob Storage.

Ondersteunt INSERT INTO transacties in Snowflake?

Ja, Snowflake ondersteunt transacties, dus je kunt BEGIN, COMMIT en ROLLBACK gebruiken om dataintegriteit te waarborgen bij het invoegen van data.

Wat zijn de performance-best practices bij het invoegen van grote hoeveelheden data?

Gebruik batchinserts in plaats van rij voor rij in te voegen, maak gebruik van COPY INTO voor bulkladingen en vermijd onnodige indexen die de invoegprestaties kunnen vertragen.

Kan ik INSERT INTO gebruiken op een secure view in Snowflake?

Nee. Views—ook secure views—zijn virtuele tabellen en kunnen niet direct worden beschreven. Je moet in de onderliggende basistabel invoegen of een tijdelijke stagingtabel gebruiken en vervolgens de view opnieuw maken of verversen.

Hoe voeg ik JSON-data in een VARIANT-kolom in?

Zet de JSON tussen enkele aanhalingstekens en cast naar VARIANT, bijv. INSERT INTO t (payload) VALUES (PARSE_JSON('{\"key\":\"value\"}'));. Snowflake bewaart het semi-gestructureerde formaat automatisch voor later gebruik in queries.

Wat is de snelste manier om een per ongeluk uitgevoerde INSERT INTO ongedaan te maken?

Maak gebruik van Time Travel om de tabel te herstellen naar een moment vóór de insert: CREATE OR REPLACE TABLE my_table AS SELECT * FROM my_table AT (TIMESTAMP => '2025-06-17 09:00:00');. Dit voorkomt handmatige DELETE-statements en behoudt clustering.

Maakt INSERT INTO automatisch micro-partities aan?

Ja. Elke DML-bewerking (inclusief inserts) triggert de micro-partitioning engine van Snowflake, die data ordent voor pruning en compressie. Je hoeft partities niet handmatig te beheren.

Hoe beïnvloedt clustering de prestaties van INSERT?

Clustering keys helpen de querysnelheid maar voegen overhead toe aan writes. Veelvuldige inserts in een sterk geclusterde tabel kunnen trager zijn, dus kies clustering keys zorgvuldig en recluster indien mogelijk buiten piekuren.

Kan ik INSERT INTO gebruiken met Snowpipe?

Indirect. Snowpipe neemt bestanden op in een stagingtabel; daarna kun je INSERT INTO uitvoeren naar analytische tabellen na transformaties. Voor continue loads combineer je Snowpipe met streams & tasks in plaats van handmatige inserts.

Hoeveel data kan ik in één statement invoegen?

Snowflake ondersteunt zeer grote INSERT INTO … SELECT-operaties—in de praktijk multi-terabyte—omdat het het werk in microbatches opdeelt. De belangrijkste beperking is de warehousegrootte en de timeout-instellingen.

Welke rolprivileges zijn nodig om in gedeelde databases INSERT INTO uit te voeren?

De rol moet INSERT-privileges hebben op de doeltabel binnen het consumeraccount. Datashares zijn standaard read-only, dus meestal kopieer je data eerst naar je eigen beschrijfbare database.

Hoe monitor ik de uitvoeringstijd en kosten van INSERT INTO?

Query de QUERY_HISTORY-view voor uitvoeringsstatistieken, warehousegrootte en verbruikte credits. Combineer met ACCOUNT_USAGE.QUERY_HISTORY voor langetermijntrendanalyse en kostenoptimalisatie.


Tim Lu's photo
Author
Tim Lu
LinkedIn

Ik ben een data scientist met ervaring in ruimtelijke analyse, machine learning en datapijplijnen. Ik heb gewerkt met GCP, Hadoop, Hive, Snowflake, Airflow en andere data science- en engineeringprocessen.

Onderwerpen
Snowflake
Cloud

Leer meer over Snowflake met deze cursussen!

Cursus

Introductie tot Snowflake

2 uur
49.9K
Snowflake is een toonaangevend datawarehousingplatform. Leer hoe je Snowsight gebruikt om data eenvoudig via SQL te openen en te verkennen.
Bekijk detailsRight Arrow
Start Cursus
Meer bekijkenRight Arrow
Gerelateerd

blog

AI vanaf nul leren in 2026: een complete gids van de experts

Ontdek alles wat je moet weten om in 2026 AI te leren, van tips om te beginnen tot handige resources en inzichten van industrie-experts.
Adel Nehme's photo

Adel Nehme

15 min

Meer BekijkenMeer Bekijken