INSERT - Amazon Redshift

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

INSERT

Fügt neue Zeilen in eine Tabelle ein. Sie können eine einzelne Zeile mit der VALUES-Syntax, mehrere Zeilen mit der VALUES-Syntax oder eine oder mehrere Zeilen einfügen, die durch die Ergebnisse einer Abfrage definiert werden (INSERT INTO...SELECT).

Anmerkung

Es wird nachdrücklich empfohlen, den Befehl COPY zu verwenden, um große Mengen von Daten zu laden. Die Verwendung einzelner INSERT-Anweisungen, um eine Tabelle auszufüllen, kann äußerst langsam sein. Wenn Ihre Daten in anderen Amazon-Redshift-Datenbanktabellen bereits vorhanden sind, können Sie alternativ INSERT INTO SELECT oder CREATE TABLE AS verwenden, um die Leistung zu verbessern. Weitere Informationen zur Verwendung des Befehls COPY zum Laden von Tabellen finden Sie unter Daten in Amazon Redshift laden.

Anmerkung

Die maximal zulässige Größe für eine einzelne SQL-Anweisung ist 16 MB.

Syntax

INSERT INTO table_name [ ( column [, ...] ) ] {DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) [, ( { expression | DEFAULT } [, ...] ) [, ...] ] | query }

Parameter

table_name

Eine temporäre oder persistente Tabelle. Nur der Besitzer der Tabelle oder ein Benutzer mit dem Recht INSERT für die Tabelle können Zeilen einfügen. Wenn Sie die Klausel query verwenden, um Zeilen einzufügen, müssen Sie das SELECT-Recht für die in der Abfrage genannten Tabellen besitzen.

Anmerkung

Verwenden Sie INSERT (externe Tabelle), um Ergebnisse einer SELECT-Abfrage in vorhandene Tabellen im externen Katalog einzufügen. Weitere Informationen finden Sie unter INSERT (externe Tabelle).

column

Sie können in eine oder mehrere Spalten der Tabelle Werte einfügen. Sie können die Zielspaltennamen in beliebiger Reihenfolge auflisten. Wenn Sie keine Spaltenliste angeben, müssen die Werte, die eingefügt werden sollen, den Tabellenspalten in der Reihenfolge entsprechen, in der sie in der Anweisung CREATE TABLE deklariert wurden. Wenn die Anzahl der Spalten, die eingefügt werden sollen, kleiner als die Anzahl der Spalten in der Tabelle ist, werden die ersten n Spalten geladen.

In jede nicht in der Anweisung INSERT aufgelistete Spalte wird entweder der deklarierte Standardwert oder ein Null-Wert geladen (implizit oder explizit).

DEFAULT VALUES

Wenn den Spalten in der Tabelle beim Erstellen der Tabelle Standardwerte zugewiesen wurden, verwenden Sie diese Schlüsselwörter, um eine Zeile einzufügen, die ausschließlich aus Standardwerten besteht. Wenn eine oder mehrere Spalten keine Standardwerte aufweisen, werden in diese Spalten Null-Werte eingefügt. Wenn eine oder mehrere Spalten als NOT NULL deklariert wurden, gibt die Anweisung INSERT einen Fehler zurück.

VALUES

Verwenden Sie dieses Schlüsselwort, um eine oder mehrere Zeilen einzufügen, wobei jede Zeile aus einem oder mehreren Werten besteht. Die VALUES-Liste für jede Zeile muss der Spaltenliste entsprechen. Um mehrere Zeilen einzufügen, verwenden Sie ein Kommatrennzeichen zwischen den einzelnen Listen von Ausdrücken. Wiederholen Sie das Schlüsselwort VALUES nicht. Alle VALUES-Listen für eine INSERT-Anweisung für mehrere Zeilen müssen die gleiche Zahl von Werten enthalten.

expression

Ein einzelner Wert oder ein Ausdruck, der in einen einzelnen Wert evaluiert wird. Jeder Wert muss mit dem Datentyp der Spalte, in die er eingefügt wird, kompatibel sein. Wenn möglich, wird ein Wert, dessen Datentyp nicht dem deklarierten Datentyp der Spalte entspricht, automatisch in einen kompatiblen Datentyp umgewandelt. Beispiel:

  • Der Dezimalwert 1.1 wird als 1 in eine INT-Spalte eingefügt.

  • Der Dezimalwert 100.8976 wird als 100.90 in eine DEC(5,2)-Spalte eingefügt.

Sie können einen Wert explizit in einen kompatiblen Datentyp umwandeln, indem Sie eine Typumwandlungssyntax in den Ausdruck einschließen. Wenn beispielsweise die Spalte COL1 in Tabelle T1 eine CHAR (3) -Spalte ist:

insert into t1(col1) values('Incomplete'::char(3));

Diese Anweisung fügt den Wert Inc in die Spalte ein.

Für eine INSERT VALUES-Anweisung für eine einzelne Zeile können Sie eine skalare Unterabfrage als Ausdruck verwenden. Das Ergebnis der Unterabfrage wird in die entsprechende Tabelle eingefügt.

Anmerkung

Unterabfragen werden für INSERT VALUES-Anweisungen für mehrere Zeilen nicht als Ausdrücke unterstützt.

DEFAULT

Verwenden Sie dieses Schlüsselwort, um den Standardwert für eine Spalte einzufügen, der beim Erstellen der Tabelle definiert wurde. Wenn für eine Spalte kein Standardwert vorhanden ist, wird eine Null eingefügt. Sie können in eine Spalte, für die eine NOT NULL-Einschränkung vorhanden ist, keinen Standardwert einfügen, wenn dieser Spalte in der Anweisung CREATE TABLE nicht explizit ein Standardwert zugewiesen wurde.

query

Sie können eine oder mehrere Zeilen in die Tabelle einfügen, indem Sie eine Abfrage definieren. Alle Zeilen, die von der Abfrage erstellt werden, werden in die Tabelle eingefügt. Die Abfrage muss eine Spaltenliste zurückgeben, die mit den Spalten in der Tabelle kompatibel ist. Die Spaltennamen müssen dabei nicht übereinstimmen.

Nutzungshinweise

Anmerkung

Es wird nachdrücklich empfohlen, den Befehl COPY zu verwenden, um große Mengen von Daten zu laden. Die Verwendung einzelner INSERT-Anweisungen, um eine Tabelle auszufüllen, kann äußerst langsam sein. Wenn Ihre Daten in anderen Amazon-Redshift-Datenbanktabellen bereits vorhanden sind, können Sie alternativ INSERT INTO SELECT oder CREATE TABLE AS verwenden, um die Leistung zu verbessern. Weitere Informationen zur Verwendung des Befehls COPY zum Laden von Tabellen finden Sie unter Daten in Amazon Redshift laden.

Das Datenformat für die eingefügten Werte muss mit dem Datenformat übereinstimmen, das von der Definition CREATE TABLE angegeben wird.

Nach dem Einfügen einer großen Zahl neuer Zeilen in eine Tabelle:

  • Führen Sie eine Vacuum-Operation für die Tabelle durch, um Speicherplatz zurückzugewinnen und die Zeilen neu zu sortieren.

  • Analysieren Sie die Tabelle, um Statistiken für den Abfrageplaner zu aktualisieren.

Wenn Werte in DECIMAL-Spalten eingefügt werden und die angegebene Skala überschritten wird, werden die geladenen Werte entsprechend gerundet. Wenn beispielsweise der Wert 20.259 in eine DECIMAL(8,2)-Spalte eingefügt wird, ist der gespeicherte Wert 20.26.

Sie können in eine GENERATED BY DEFAULT AS IDENTITY-Spalte einfügen. Sie können als GENERATED BY DEFAULT AS IDENTITY-Spalten mit von Ihnen angegebenen Werten aktualisieren. Weitere Informationen finden Sie unter GENERATED BY DEFAULT AS IDENTITY.