Direkt zum Inhalt

INSERT INTO in Snowflake: Ein kompletter Leitfaden für Einsteiger

Lerne, wie du mit der INSERT INTO-Anweisung effizient Daten in Snowflake Tabellen einfügen kannst. Dieser Leitfaden behandelt die Syntax, Anwendungsfälle, Best Practices und Techniken zur Fehlerbehebung.
Aktualisierte 17. Juni 2025  · 6 Min. Lesezeit

Wenn du mit Snowflake arbeitest, gehört das Einfügen von Daten in Tabellen zu den grundlegenden Operationen, die du durchführen wirst. Mit der Anweisung INSERT INTO kannst du neue Datensätze in eine Tabelle einfügen, egal ob du manuell Werte eingibst, mehrere Zeilen einfügst oder Daten aus anderen Tabellen abrufst.

In diesem Leitfaden gehe ich mit dir durch die Syntax, verschiedene Anwendungsfälle, Best Practices und allgemeine Schritte zur Fehlerbehebung, um INSERT INTO effektiv in Snowflake zu nutzen.

Was ist der Befehl INSERT INTO in Snowflake?

Bevor wir die Syntax besprechen, müssen wir zunächst den Zweck von INSERT INTO in Snowflake und die verschiedenen Anwendungsfälle verstehen. 

Das Hinzufügen von Daten zu einer Datenbank ist ein wichtiger Teil der Verwaltung einer Datenbank. Die Anweisung INSERT INTO wird in Snowflake verwendet, um neue Datenzeilen in eine Tabelle einzufügen. Sie kann einzelne Zeilen, mehrere Zeilen oder Massendaten aus einer anderen Tabelle einfügen. Du kannst entweder Daten einfügen, indem du jeden Wert für eine bestimmte Zeile oder einen Satz von Zeilen manuell eingibst, oder eine SQL-Anweisung verwenden, um Daten aus anderen Datenquellen zu laden.

> INSERT INTO ist zwar ein grundlegender Befehl, aber es ist ein guter Anfang, Snowflake und seine Architektur zu verstehen. Schau dir tdieses Tutorial zu Snowflake an, um die Grundlagen aufzufrischen!

Anwendungsfälle für INSERT INTO

Hier sind einige der häufigsten Anwendungsfälle für die INSERT INTO Klausel. 

  • Manuelles Hinzufügen neuer Datensätze zu einer Tabelle.
  • Masseneinfügung mehrerer Zeilen in einer einzigen Abfrage.
  • Übertragen von Daten von einer Tabelle in eine andere.
  • Anhängen neuer Daten an einen bestehenden Datensatz.
  • Auffüllen einer Tabelle aus den Ergebnissen einer SELECT Abfrage.

> Das Erlernen dieser Klausel ist grauch für Snowflake-Interviews!

Syntax von INSERT INTO in Snowflake

Jetzt kommen wir zur eigentlichen Syntax. Lass uns zunächst die einfachste Verwendung von INSERT INTO besprechen: das Hinzufügen von Daten zu einer Zeile durch manuelle Eingabe der Werte.

Die grundlegende Syntax für INSERT INTO lautet wie folgt:

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

Du schreibst die Klausel INSERT INTO aus, gefolgt von der table_name, in die wir die Daten einfügen. Um die Reihenfolge der Daten genau festzulegen, können wir die Namen der Spalten, die in Klammern folgen, als (column1, column2, column3) angeben. Der letzte Teil ist das Schreiben der VALUES (value1, value2, value3), die in die jeweiligen Spalten eingefügt werden.

Einfügen von Daten ohne Angabe von Spaltennamen

Wenn du die Spaltennamen weglässt, geht Snowflake davon aus, dass die Werte in der gleichen Reihenfolge wie im Schema der Tabelle angegeben werden. Das heißt, der erste Wert wird für die erste Spalte in der Tabelle angenommen usw.

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

Bei diesem Ansatz musst du sicherstellen, dass die Werte in der gleichen Reihenfolge wie die Spalten stehen, sonst kann es zu Problemen mit den Datentypen oder der Datenkonsistenz kommen.

Erweiterte Verwendung von INSERT INTO in Snowflake

Einige der fortgeschritteneren Verwendungen von INSERT INTO sind das Einfügen einer einzelnen Zeile aus einer anderen Tabelle, das Einfügen mehrerer Zeilen oder das Einfügen von Daten mit Bedingungen. Dies ist eine nützliche Methode, um Daten zu einer Tabelle hinzuzufügen oder Daten in einer separaten Tabelle zu archivieren.

Verwendung von INSERT INTO mit mehreren Zeilen

Anstatt eine Zeile nach der anderen einzufügen, kannst du mehrere Zeilen in einer einzigen Anweisung einfügen:

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

Dieser Ansatz reduziert den Overhead bei der Abfrage und verbessert die Leistung. Beachte, dass jede Zeile vollständig von einer Klammer umgeben ist und von einem Komma gefolgt wird. Wenn du das nicht tust, kann das zu Fehlern führen. 

Einfügen von Daten aus einer anderen Tabelle

Um Daten von einer Tabelle in eine andere zu kopieren, verwendest du INSERT INTO mit einer SELECT Anweisung:

INSERT INTO target_table (column1, column2)

SELECT
column1, 
column2 
FROM source_table ;

Dies ist nützlich, um Daten zu archivieren, Daten vor dem Einfügen umzuwandeln oder gefilterte Datensätze anzuhängen. Wenn die Quelldaten die gleiche Spaltenreihenfolge wie das Ziel haben, kannst du die Spalten neben dem target_table nicht benennen.

Bedingte Einsätze

Du kannst Daten basierend auf einer Bedingung in deine SELECT Anweisung einfügen, sodass du nicht eine ganze Tabelle kopierst.

INSERT INTO high_salary_employees (id, name, salary)

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

Dadurch wird sichergestellt, dass nur Arbeitnehmer, die die Bedingung erfüllen, in die neue Tabelle eingefügt werden. Auf diese Weise wird die Datenintegrität gewahrt und der Speicher- und Rechenaufwand reduziert.

Best Practices für die Verwendung von INSERT INTO in Snowflake

Hier sind einige bewährte Methoden für die Verwendung von INSERT INTO in Snowflake. Dazu gehört die Verwendung effizienterer Anweisungen wie MERGE und die Validierung von Daten vor dem Einfügen.

MERGE anstelle von INSERT INTO für Upserts verwenden

Wenn du neue Datensätze einfügen, aber bestehende Datensätze aktualisieren musst, ist MERGE die bessere Wahl, weil es bestehende Daten abgleichen kann. 

Es sucht nach aktuellen Zeilen, die ein bestimmtes Kriterium erfüllen (z.B. eine vorhandene Mitarbeiter-ID) und kann bestimmte Werte in der Zieltabelle anhand einer Quelltabelle aktualisieren. Wenn es keine Übereinstimmung gibt, fügt es die neuen Daten ein. Dieses Konzept ist als "Upsert" (Update und Insert) bekannt. 

Im Folgenden findest du ein Beispiel für die Verwendung von 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);

> Die MERGE Erklärung wird schnell zum Standardverfahren und ist einBestandteil der Snowflake-Zertifizierungen.

Batch-Einsätze und Leistung

Um die Leistung beim Einfügen großer Datensätze zu verbessern, solltest du dich auf die Durchführung von Batch-Inserts konzentrieren. Das reduziert den Overhead, weil nicht bei jeder Last neue Verbindungen aufgebaut werden müssen, und verbessert die Gesamtleistung. Hier sind einige Tipps zum Einfügen von Stapeln:

  • Verwende Masseneinfügungen, anstatt Zeile für Zeile einzufügen.
  • Verwende COPY INTO, wenn du große Daten aus externen Quellen lädst. Das ist nützlich, wenn du eine Verbindung zu einem System wie S3 herstellst.
  • Vermeide es, Daten innerhalb von Schleifen in Skripten einzufügen; die Stapelverarbeitung ist effizienter. Beende also die Schleife, speichere die Daten als eine einzige Datenquelle und lade dann diese gesamte Datenquelle auf einmal.

Datenüberprüfung vor dem Einfügen

Bevor du Daten einfügst, musst du sie validieren. Wenn deine Daten nicht validiert sind, kann das zu vielen Problemen oder gar zum Scheitern führen. Überlege dir, wie die Daten nachgelagert verwendet werden können und wie deine eingefügten Daten aussehen sollen. Hier sind einige wichtige Dinge, auf die du achten solltest:

  • Die Datentypen stimmen mit den Spaltendefinitionen überein.
  • Erforderliche Felder sind nicht null.
  • Keine doppelten Primärschlüssel oder Verstöße gegen eindeutige Beschränkungen.

Fehlerbehandlung bei INSERT INTO in Snowflake

Wie bereits erwähnt, kann es beim Einfügen von Daten gelegentlich zu Fehlern kommen. Hier sind einige Tipps, wie du mit häufigen Fehlern umgehen kannst. 

Umgang mit doppelten Schlüsseln

Snowflake selbst erzwingt nicht unbedingt eindeutige Beschränkungen, d.h. es ist möglich, doppelte Daten einzufügen. 

Wenn du dir Sorgen um doppelte Schlüssel machst, ist es vielleicht besser, sie mit MERGE oder ON CONFLICT (falls unterstützt) zu behandeln. Schließlich kannst du mit WHERE auch eine Bedingung zu deiner Einfügung hinzufügen, um alles auszuschließen, was in der Zieltabelle vorhanden ist.

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

Umgang mit NULL-Werten

Stelle sicher, dass nullbare Spalten NULL-Werte zulassen oder Standardwerte bereitstellen. Snowflake setzt alle NOT NULL-Spaltenbeschränkungen durch. Wenn du also NULL-Daten in einer Spalte mit dieser Beschränkung hast, schlägt deine Einfügung fehl. Das Wichtigste dabei ist, dass du deine Daten verstehst und weißt, wo NULLs erlaubt sind und wo nicht.

Fehlersuche bei häufigen Problemen mit INSERT INTO

Andere Probleme können sich auf Datentypen oder Berechtigungsfragen beziehen. Wir werden kurz besprechen, wie du mit diesen Problemen umgehen kannst.

Unstimmigkeiten beim Datentyp

Es treten Fehler auf, wenn du einen Wert mit dem falschen Datentyp einfügst. Du kannst das manchmal umgehen, indem du deine Daten typisieren lässt, aber das kann zu NULLs führen. Um sicherzugehen, dass deine eingefügten Daten mit denen des Ziels übereinstimmen, kannst du versuchen, auf information_schema (wo du Rechte hast) nachzusehen und dein Schema auf diese Weise zu überprüfen:

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

Probleme mit Berechtigungen

Wenn du einen Berechtigungsfehler erhältst, überprüfe die Benutzerrollen und -berechtigungen:

SHOW GRANTS TO USER current_user;

Wenn du nicht die Erlaubnis hast, INSERT zu benutzen, frage deinen Vorgesetzten, deine IT-Abteilung oder den Eigentümer des Datensatzes. Wenn du in der Lage bist, dir selbst Rechte zu erteilen, dann verwende den folgenden Code:

GRANT INSERT ON TABLE employees TO user_name;

Fazit

Der Befehl INSERT INTO in Snowflake ist ein leistungsfähiges Werkzeug, um Tabellen effizient mit Daten zu füllen. Ganz gleich, ob du einzelne Zeilen einfügst, Massendaten oder Daten aus einer anderen Tabelle kopierst, die Kenntnis der Syntax und der Best Practices gewährleistet Datenintegrität und Leistung. Du kannst eine robuste und effiziente Snowflake-Datenbank pflegen, indem du Fehler behandelst, Daten validierst und Einfügungen optimierst. 

Um mehr über Snowflake zu erfahren, empfehle ich dir die folgenden Kurse:

FAQs

Was ist der Unterschied zwischen INSERT INTO und COPY INTO in Snowflake?

INSERT INTO wird zum Einfügen bestimmter Datenzeilen verwendet, während COPY INTO für das Massenladen großer Datensätze aus externen Quellen wie AWS S3 oder Azure Blob Storage optimiert ist.

Unterstützt INSERT INTO Transaktionen in Snowflake?

Ja, Snowflake unterstützt Transaktionen, so dass du BEGIN, COMMIT und ROLLBACK verwenden kannst, um die Datenintegrität beim Einfügen von Daten zu gewährleisten.

Was sind die besten Praktiken für die Leistung beim Einfügen großer Datenmengen?

Verwende Batch-Inserts, anstatt Zeile für Zeile einzufügen, nutze COPY INTO für Bulk-Loads und vermeide unnötige Indizes, die die Einfügeleistung verlangsamen können.

Kann ich in Snowflake INTO in eine sichere Ansicht einfügen?

Nein. Ansichten - einschließlich sicherer Ansichten - sind virtuelle Tabellen, in die nicht direkt geschrieben werden kann. Du musst in die zugrundeliegende Basistabelle einfügen oder eine transiente Staging-Tabelle verwenden und dann die Ansicht neu erstellen oder aktualisieren.

Wie kann ich JSON-Daten in eine VARIANT-Spalte einfügen?

Schließe das JSON in einfache Anführungszeichen ein und wandle es in VARIANTum , z.B. INSERT INTO t (payload) VALUES (PARSE_JSON('{\"key\":\"value\"}')); . Snowflake bewahrt das halbstrukturierte Format automatisch für spätere Abfragen auf.

Wie kann ich eine versehentliche INSERT INTO-Eingabe am schnellsten rückgängig machen?

Nutze die Zeitreise, um die Tabelle an einem Punkt vor dem Einfügen wiederherzustellen: CREATE OR REPLACE TABLE my_table AS SELECT * FROM my_table AT (TIMESTAMP => '2025-06-17 09:00:00');. Dadurch werden manuelle DELETE-Anweisungen vermieden und das Clustering bleibt erhalten.

Erstellt INSERT INTO automatisch Mikropartitionen?

Ja. Jede DML-Operation (einschließlich Einfügungen) löst die Micro-Partitioning-Engine von Snowflake aus, die die Daten für das Pruning und die Komprimierung organisiert. Du musst die Partitionen nicht mehr manuell verwalten.

Wie wirkt sich das Clustering auf die INSERT-Leistung aus?

Clustering-Schlüssel erhöhen die Abfragegeschwindigkeit, verursachen aber zusätzlichen Aufwand beim Schreiben. Häufige Einfügungen in eine stark geclusterte Tabelle können langsamer sein, also wähle die Clustering-Schlüssel sorgfältig aus und führe das Clustering nach Möglichkeit außerhalb der Stoßzeiten durch.

Kann ich INSERT INTO mit Snowpipe verwenden?

Indirekt. Snowpipe nimmt Dateien in eine Staging-Tabelle auf; nach der Umwandlung kannst du dann INSERT INTO analytische Tabellen aufrufen. Für kontinuierliches Laden kombinierst du Snowpipe mit Streams & Tasks anstelle von manuellen Einsätzen.

Wie viele Daten kann ich in einer einzigen Anweisung einfügen?

Snowflake unterstützt sehr große INSERT INTO … SELECT Operationen - in der Praxis mehrere Terabyte -, weil es die Arbeit in Mikro-Batches aufteilt. Der wichtigste Begrenzer sind die Einstellungen für die Lagergröße und die Zeitüberschreitung.


Tim Lu's photo
Author
Tim Lu
LinkedIn

Ich bin Datenwissenschaftler mit Erfahrung in räumlicher Analyse, maschinellem Lernen und Datenpipelines. Ich habe mit GCP, Hadoop, Hive, Snowflake, Airflow und anderen Data Science/Engineering-Prozessen gearbeitet.

Themen

Lerne mehr über Snowflake mit diesen Kursen!

Kurs

Introduction to Snowflake SQL

2 Std.
32.8K
This course will take you from Snowflake's foundational architecture to mastering advanced SnowSQL techniques.
Siehe DetailsRight Arrow
Kurs starten
Mehr anzeigenRight Arrow
Verwandt

Der Blog

Die 20 besten Snowflake-Interview-Fragen für alle Niveaus

Bist du gerade auf der Suche nach einem Job, der Snowflake nutzt? Bereite dich mit diesen 20 besten Snowflake-Interview-Fragen vor, damit du den Job bekommst!
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

15 Min.

Der Blog

Die 50 besten AWS-Interview-Fragen und Antworten für 2025

Ein kompletter Leitfaden zur Erkundung der grundlegenden, mittleren und fortgeschrittenen AWS-Interviewfragen, zusammen mit Fragen, die auf realen Situationen basieren.
Zoumana Keita 's photo

Zoumana Keita

15 Min.

Der Blog

Lehrer/innen und Schüler/innen erhalten das Premium DataCamp kostenlos für ihre gesamte akademische Laufbahn

Keine Hacks, keine Tricks. Schüler/innen und Lehrer/innen, lest weiter, um zu erfahren, wie ihr die Datenerziehung, die euch zusteht, kostenlos bekommen könnt.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

4 Min.

Der Blog

2022-2023 DataCamp Classrooms Jahresbericht

Zu Beginn des neuen Schuljahres ist DataCamp Classrooms motivierter denn je, das Lernen mit Daten zu demokratisieren. In den letzten 12 Monaten sind über 7.650 neue Klassenzimmer hinzugekommen.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

8 Min.

Der Blog

Top 30 Generative KI Interview Fragen und Antworten für 2024

Dieser Blog bietet eine umfassende Sammlung von Fragen und Antworten zu generativen KI-Interviews, die von grundlegenden Konzepten bis hin zu fortgeschrittenen Themen reichen.
Hesam Sheikh Hassani's photo

Hesam Sheikh Hassani

15 Min.

Der Blog

Q2 2023 DataCamp Donates Digest

DataCamp Donates hat im zweiten Quartal 2023 über 20.000 Stipendien an unsere gemeinnützigen Partner vergeben. Erfahre, wie fleißige benachteiligte Lernende diese Chancen in lebensverändernde berufliche Erfolge verwandelt haben.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

Mehr anzeigenMehr anzeigen