INSERT¶
Aktualisiert eine Tabelle, indem eine oder mehrere Zeilen in die Tabelle eingefügt werden. Die in jede Spalte der Tabelle eingefügten Werte können explizit angegeben werden oder das Ergebnis einer Abfrage sein.
- Siehe auch:
Syntax¶
Erforderliche Parameter¶
target_tableGibt die Zieltabelle an, in die Zeilen eingefügt werden sollen.
VALUES ( value | DEFAULT | NULL [ , ... ] ) [ , ( ... ) ]Gibt einen oder mehrere Werte an, die in die entsprechenden Spalten der Zieltabelle eingefügt werden sollen.
In einer
VALUES-Klausel können Sie Folgendes angeben:value: Fügt den explizit angegebenen Wert ein. Der Wert kann ein Literal oder ein Ausdruck sein, der einen einzelnen Wert ergibt.DEFAULT: Fügt den Standardwert für die entsprechende Spalte in die Zieltabelle ein.NULL: Fügt einenNULL-Wert ein.
Jeder Wert in der Klausel muss durch ein Komma getrennt werden.
Sie können mehrere Zeilen einfügen, indem Sie zusätzliche Wertemengen in der Klausel angeben. Weitere Informationen dazu finden Sie in den Nutzungshinweise und in den Beispiele.
queryGeben Sie eine Abfrageanweisung an, die Werte zurückgibt, die in die entsprechenden Spalten eingefügt werden sollen. Auf diese Weise können Sie Zeilen aus einer oder mehreren Quelltabellen in eine Zieltabelle einfügen.
Optionale Parameter¶
OVERWRITEGibt an, dass die Zieltabelle vor dem Einfügen der Werte in die Tabelle abgeschnitten werden soll. Beachten Sie, dass die Angabe dieser Option keine Auswirkungen auf die Zugriffssteuerungsrechte der Tabelle hat.
INSERT-Anweisungen mit
OVERWRITEkönnen im Rahmen der aktuellen Transaktion verarbeitet werden, wodurch DDL-Anweisungen vermieden werden, die eine Transaktion bestätigen (Commit), wie z. B.:Standard: Kein Wert (die Zieltabelle wird vor dem Einfügen nicht gekürzt).
( target_col_name [ , ... ] )Gibt eine oder mehrere Spalten in der Zieltabelle an, in die die entsprechenden Werte eingefügt werden. Die Anzahl der angegebenen Zielspalten muss mit der Anzahl der angegebenen Werte oder Spalten (wenn die Werte das Ergebnis einer Abfrage sind) in der
VALUES-Klausel übereinstimmen.Standard: Kein Wert (alle Spalten in der Zieltabelle werden aktualisiert)
Nutzungshinweise¶
Mit einem einzigen INSERT-Befehl können Sie mehrere Zeilen in eine Tabelle einfügen, indem Sie zusätzliche Wertemengen angeben, die durch Kommas in der VALUES-Klausel getrennt sind.
Die folgende Klausel würde beispielsweise 3 Zeilen in eine 3-spaltige Tabelle einfügen, mit den Werten
1,2und3in den ersten beiden Zeilen und den Werten2,3und4in der dritten Zeile:Um die Option OVERWRITE für INSERT verwenden zu können, müssen Sie eine Rolle verwenden, die über die Berechtigung DELETE für die Tabelle verfügt, da OVERWRITE die vorhandenen Datensätze in der Tabelle löscht.
Einige Arten von Ausdrücken können in nicht in der VALUES-Klausel angegeben werden, einschließlich der folgenden Ausdrücke:
Unterabfragen
Beispiel:
Werte des semistrukturierten oder strukturierten Datentyps.
Beispiel:
-
Beispiel:
-
Beispiel:
Als Alternative zur VALUES-Klausel geben Sie den Ausdruck in einer
query-Klausel an. Sie können zum Beispiel den folgenden Ausdruck ersetzen:mit diesem Ausdruck:
Die VALUES-Klausel ist auf 200.000 Zeilen begrenzt. Diese Grenze gilt für eine einzelne INSERT INTO … VALUES-Anweisung und eine einzelne INSERT INTO … SELECT … FROM VALUES-Anweisung. Erwägen Sie die Verwendung des Befehls COPY INTO <Tabelle>, um ein Massenladen von Daten auszuführen. Weitere Informationen zur Verwendung der VALUES-Klausel in einer SELECT-Anweisung finden Sie unter VALUES.
Informationen zum Einfügen von Daten in Hybridtabellen finden Sie unter Laden von Daten.
Beispiele¶
Die folgenden Beispiele verwenden den Befehl INSERT.
Einzeiliges Einfügen mit einer Abfrage¶
Konvertieren Sie drei Zeichenfolgenwerte in Daten oder Zeitstempel und fügen Sie sie in eine einzelne Zeile in der mytable-Tabelle ein:
Wie im vorherigen Beispiel, aber geben Sie an, dass nur die erste und dritte Spalte der Tabelle aktualisiert werden sollen:
Mehrzeiliges Einfügen mit explizit spezifizierten Werten¶
Erstellen Sie die Tabelle employees und fügen Sie vier Datenzeilen ein, indem Sie in der VALUES-Klausel Wertemengen in einer kommagetrennten Liste angeben:
Achten Sie beim mehrzeiligen Einfügen darauf, dass die Datentypen der eingefügten Werte über die Zeilen hinweg konsistent sind, da der Datentyp der ersten Zeile als Richtlinie betrachtet wird. Erstellen Sie eine Tabelle und fügen Sie zwei Zeilen ein:
Der erste Insert funktioniert wie erwartet:
Der zweite Insert schlägt fehl, weil der Datentyp des Werts in der zweiten Zeile ('d') eine Zeichenfolge ist, die sich vom numerischen Datentyp des Werts in der ersten Zeile (3) unterscheidet. Der Insert schlägt fehl, obwohl beide Werte auf VARCHAR gesetzt werden können, was dem Datentyp der Spalte in der Tabelle entspricht. Der Insert schlägt fehl, obwohl der Datentyp des Werts 'd' derselbe ist wie der Datentyp der Spalte v:
Wenn die Datentypen in den Zeilen übereinstimmen, ist der Insert erfolgreich und beide numerischen Werte werden auf den Datentyp VARCHAR gesetzt:
Mehrzeiliges Einfügen mit einer Abfrage¶
Fügen Sie mehrere Datenzeilen aus der Tabelle contractors in die Tabelle employees ein:
Markieren Sie nur die Zeilen, in denen die Spalte
worknumdie Vorwahl650enthält.Fügen Sie einen NULL-Wert in die Spalte
cityein.
Fügen Sie mehrere Datenzeilen aus der Tabelle contractors mit einem allgemeinen Tabellenausdruck in die Tabelle employees ein:
Fügen Sie Spalten aus zwei Tabellen (emp_addr, emp_ph) in eine dritte Tabelle (emp) ein, indem Sie ein INNER JOIN auf der id-Spalte der Quelltabellen verwenden:
Mehrzeiliges Einfügen bei JSON-Daten¶
Fügen Sie zwei JSON-Objekte in eine VARIANT-Spalte einer Tabelle ein:
Einfügen mit OVERWRITE¶
In diesem Beispiel wird INSERT mit OVERWRITE verwendet, um die Tabelle sf_employees aus employees neu zu erstellen, nachdem neue Datensätze zur Tabelle employees hinzugefügt wurden.
Hier sind die Anfangsdaten für beide Tabellen:
Diese Anweisung fügt mit der OVERWRITE-Klausel Zeilen in die Tabelle sf_employees ein:
Da die Option INSERT die Klausel OVERWRITE verwendet hat, sind die alten Zeilen von sf_employees überschrieben:
Schreiben in eine v3 Apache Iceberg™-Tabelle¶
Im folgenden Beispiel wird eine Zeile in eine Apache Iceberg™-Tabelle eingefügt, die mit v3 der Apache Iceberg™-Tabellenspezifikation übereinstimmt: