Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - SQL-Referenzhandbuch » Verwendung von SQL » SQL-Anweisungen » SQL-Anweisungen (E-O)

 

LOAD TABLE-Anweisung

Mit dieser Anweisung importieren Sie Massendaten in eine Datenbanktabelle aus einer externen Datei.

Syntax
LOAD [ INTO ] TABLE [ Eigentümer.]Tabellenname 
[ ( Spaltenname, ... ) ]
Ladequelle
[ Ladeoption ... ] 
[ Statistikbegrenzungsoption ]
Ladequelle : 
{ FROM Dateinamen-Ausdruck 
   | USING FILE Dateinamen-Ausdruck 
   | USING CLIENT FILE Clientdateinamen-Ausdruck
   | USING VALUE Wertausdruck
   | USING COLUMN Spaltenausdruck  }
Dateinamen-Ausdruck: Zeichenfolge | Variable 
Clientdateinamen-Ausdruck: Zeichenfolge | Variable 
Wertausdruck : Ausdruck
Spaltenausdruck : 
Spaltenname 
   FROM Tabellenname 
   ORDER BY Spaltenliste
Ladeoption :
BYTE ORDER MARK { ON | OFF }
| CHECK CONSTRAINTS { ON | OFF }
| { COMPRESSED | AUTO COMPRESSED | NOT COMPRESSED }
| { ENCRYPTED KEY 'Schlüssel' | NOT ENCRYPTED }
| COMMENTS INTRODUCED BY Kommentarpräfix
| COMPUTES { ON | OFF }
| DEFAULTS { ON | OFF }
| DELIMITED BY Zeichenfolge
| ENCODING Kodierung
| ESCAPE CHARACTER Zeichen
| ESCAPES { ON | OFF }
| FORMAT { TEXT | BCP }
| HEXADECIMAL { ON | OFF }
| ORDER { ON | OFF }
| PCTFREE Prozent_freier_Speicherplatz
| QUOTE Zeichenfolge
| QUOTES { ON | OFF }
| ROW DELIMITED BY Zeichenfolge
| SKIP Ganzzahl
| STRIP { ON | OFF | LTRIM | RTRIM | BOTH }
| WITH CHECKPOINT { ON | OFF }
| WITH { FILE NAME | ROW | CONTENT } LOGGING
Statistikbegrenzungsoption :
STATISTICS { 
   ON [ ALL COLUMNS ] 
   | ON KEY COLUMNS 
   | ON ( Spaltenliste )
   | OFF 
   }
Kommentarpräfix: Zeichenfolge
Kodierung: Zeichenfolge
Parameter
  • Spaltenname   Mit dieser Klausel geben Sie eine oder mehrere Spalten an, in die Daten geladen werden sollen. Alle nicht in der Spaltenliste vorhandenen Spalten werden NULL, wenn DEFAULTS auf OFF gesetzt ist. Wenn DEFAULTS auf ON gesetzt ist und die Spalte einen Standardwert hat, wird dieser Wert benutzt. Wenn DEFAULTS auf OFF gesetzt ist und eine nicht nullwertfähige Spalte aus der Spaltenliste ausgelassen wird, versucht der Datenbankserver, die leere Zeichenfolge in den Datentyp der Spalte zu konvertieren.

    Wenn eine Spaltenliste angegeben ist, werden die in der Datei erwarteten Spalten sowie die Reihenfolge, in der sie erwartungsgemäß erscheinen werden, aufgelistet. Spaltennamen können nicht wiederholt werden. Spaltennamen, die nicht in der Liste erscheinen, werden auf NULL/null/leer oder DEFAULT gesetzt (abhängig von der Nullwertfähigkeit der Spalte, vom Datentyp und der DEFAULTS-Einstellung). Spalten, die in der Eingabedatei existieren und von LOAD TABLE ignoriert werden sollen, können mit dem Spaltennamen filler() angegeben werden.

  • Ladequelle   Verwenden Sie diese Klausel, um die Datenquelle anzugeben, aus der die Daten geladen werden sollen. Es gibt mehrere Datenquellen, aus denen Daten geladen werden können. Die folgende Liste enthält die unterstützten Ladequellen:

  • FROM-Klausel   Verwenden Sie diese Klausel, um eine Datei anzugeben. Der Dateinamen-Ausdruck wird an die Datenbank als Zeichenfolge übergeben. Die Zeichenfolge unterliegt daher denselben Formatierungsanforderungen für die Datenbank wie auch andere SQL-Zeichenfolgen. Speziell sind folgende Punkte zu beachten:

    • Bei Angabe des Verzeichnissuchpfads muss das Backslashzeichen (\) durch zwei Backslashes dargestellt werden. Die Anweisung zum Laden der Daten aus der Datei c:\temp\input.dat in die Tabelle Employees lautet wie folgt:

      LOAD TABLE Employees
      FROM 'c:\\temp\\input.dat' ...
    • Der Pfadname ist relativ zum Datenbankserver, nicht aber zur Clientanwendung.

    • Sie können eine UNC-Pfadangabe verwenden, um Daten aus Dateien von anderen Computern als dem Datenbankserver zu laden.

  • USING FILE-Klausel   Verwenden Sie diese Klausel, um Daten aus einer Datei zu laden. Dies ist synonym mit Angabe der FROM Dateiname-Klausel.

  • USING CLIENT FILE-Klausel   Verwenden Sie diese Klausel, um Daten aus einer Datei auf dem Clientsystem zu laden. Wenn der Datenbankserver Daten aus Clientdateinamen-Ausdruck bezieht, werden die Daten im Speicher des Servers nicht materialisiert. Daher gilt die Begrenzung des Datenbankservers für die Größe von Blob-Ausdrücken nicht für die Datei. Die Clientdatei kann daher jede beliebige Größe haben.

  • USING VALUE-Klausel   Verwenden Sie diese Klausel, um Daten aus einem Ausdruck des Typs CHAR, NCHAR, BINARY oder LONG BINARY bzw. einer BLOB-Zeichenfolge zu laden. Nachstehend finden Sie Beispiele für die Einsatzmöglichkeiten dieser Klausel:

    • Die folgende Syntax benutzt die xp_read_file-Systemprozedur, um die zu ladenden Werte aus der Zieldatei zu holen:

      ... USING VALUE xp_read_file( 'Dateiname' )...
    • Die folgende Syntax gibt den Wert direkt an, indem zwei Zeilen mit den Werten 4 und 5 eingefügt werden.

      ... USING VALUE '4\n5'...
    • Die folgende Syntax benutzt die Ergebnisse der READ_CLIENT_FILE-Funktion als Wert:

      ... USING VALUE READ_CLIENT_FILE( Clientdateinamen-Ausdruck )

      In diesem Fall können Sie auch den USING CLIENT FILE Clientdateinamen-Ausdruck angeben, da dies semantisch gleichwertig ist.

    Wenn die ENCODING-Klausel in der LOAD TABLE-Anweisung nicht angegeben ist, erfolgt das Laden der Werte im Zeichensatz der Datenbank (db_charset), wenn die Werte vom Typ CHAR oder BINARY sind, und im NCHAR-Datenbank-Zeichensatz (nchar_charset), wenn die Werte vom Typ NCHAR sind.

  • USING COLUMN-Klausel   Verwenden Sie diese Klausel, um Daten aus einer einzelnen Spalte in eine andere Tabelle zu laden. Diese Klausel wird vom Datenbankserver benutzt, wenn er das Transaktionslog während der Wiederherstellung abarbeitet, indem die LOAD TABLE ... WITH CONTENT LOGGING-Anweisungen neu ausgeführt werden. Die Transaktionslogeinträge für LOAD TABLE ... WITH CONTENT LOGGING-Anweisungen enthalten Abschnitte mit verketteten Zeilen. Wenn ein Datenbankserver bei der Wiederherstellung im Transaktionslog auf diese Abschnitte trifft, lädt er die Teile in eine temporäre Tabelle und danach alle Daten aus dem ursprünglichen Ladevorgang.

    Die folgenden Klauseln werden in der USING COLUMN-Klausel unterstützt:

    • Tabellenname   Der Name der Basistabelle oder temporären Tabelle, die die Spalte enthält, aus der die Daten geladen werden sollen. Wenn diese Tabelle vom Datenbankserver während der Wiederherstellung aus dem Transaktionslog benutzt wird, ist dies die Tabelle, die die Abschnitte der Zeilen enthält, die syntaktisch analysiert und geladen werden sollen.

    • Spaltenname   Der Name der Spalte in Tabellenname, die die zu ladendenden Abschnitte der Zeilen enthält.

    • Spaltenliste   Eine oder mehr Spalten in der Zieltabelle, die benutzt werden, um die Zeilen vor dem Laden der Daten zu sortieren.

    • Ladeoptionen   Es gibt mehrere Ladeoptionen, mit denen Sie steuern können, wie Daten geladen werden sollen. Die folgende Liste enthält die unterstützten Ladeoptionen:

      • BYTE ORDER MARK-Klausel   Verwenden Sie diese Klausel, um anzugeben, ob eine Byte Order Mark (BOM) in der Kodierung enthalten ist. Standardmäßig ist diese Option ON, sodass der Server eine Byte Order Mark (BOM) am Beginn der Daten suchen und interpretieren kann. Wenn BYTE ORDER MARK OFF ist, sucht der Server nicht nach einer BOM.

        Wenn die ENCODING-Klausel angegeben ist:

        • Wenn die BYTE ORDER MARK-Option ON ist und Sie eine UTF-16-Kodierung mit Endian wie UTF-16BE oder UTF-16LE angeben, sucht der Datenbankserver nach einer BOM am Beginn der Daten. Wenn eine BOM vorhanden ist, wird sie benutzt, um den Endian der Daten zu prüfen. Wenn Sie den falschen Endian angeben, wird ein Fehler zurückgegeben.
        • Wenn die BYTE ORDER MARK-Option ON ist und Sie eine UTF-16-Kodierung ohne expliziten Endian angegeben haben, sucht der Datenbankserver nach einer BOM am Beginn der Daten. Wenn eine BOM vorhanden ist, wird sie benutzt, um den Endian der Daten zu bestimmen. Sonst wird der Endian des Betriebssystems angenommen.
        • Wenn die BYTE ORDER MARK-Option ON ist und Sie eine UTF-8-Kodierung angegeben haben, sucht der Datenbankserver nach einer BOM am Beginn der Daten. Wenn eine BOM vorhanden ist, wird sie ignoriert.

        Wenn die ENCODING-Klausel nicht angegeben ist:

        • Wenn Sie keine ENCODING-Klausel angeben und die BYTE ORDER MARK-Option ON ist, sucht der Server nach einer BOM am Beginn der Eingabedaten. Wenn es eine BOM findet, wird die Quellkodierung basierend auf der Kodierung der BOM (UTF-16BE, UTF-16LE oder UTF-8) automatisch gewählt und die BOM wird nicht als Teil der zu ladenden Daten angesehen.
        • Wenn Sie keine ENCODING-Klausel angeben und die BYTE ORDER MARK-Option OFF ist oder keine BOM am Beginn der Eingabedaten gefunden wird, verwendet Interactive SQL die CHAR-Kodierung.

      • CHECK CONSTRAINTS-Klausel   Verwenden Sie diese Klausel, um zu steuern, ob Integritätsregeln während des Ladens geprüft werden. CHECK CONSTRAINTS ist standardmäßig auf ON gesetzt, das Dienstprogramm Unload (dbunload) schreibt aber LOAD TABLE-Anweisungen mit der Option CHECK CONSTRAINTS auf OFF. Wenn Sie CHECK CONSTRAINTS auf OFF setzen, deaktivieren Sie Prüf-Integritätsregeln, was z.B. während des Datenbank-Neuaufbaus nützlich sein kann. Wenn einer Tabelle Prüf-Integritätsregeln zugeordnet sind, die benutzerdefinierte Funktionen aufrufen, welche noch nicht erstellt wurden, schlägt der Neuaufbau fehl. Dies ist allerdings nicht der Fall, wenn CHECK CONTRAINTS auf OFF gesetzt ist.

      • COMMENTS INTRODUCED BY-Klausel   Mit dieser Klausel können Sie die Zeichenfolge angeben, die in der Datendatei verwendet wird, um einen Kommentar einzuleiten. Wird diese Option verwendet, ignoriert LOAD TABLE jede Zeile, die mit der Zeichenfolge Kommentarpräfix beginnt. Beispiel: In der folgenden Anweisung werden Zeilen in input.dat ignoriert, die mit // beginnen.
        LOAD TABLE Employees FROM 'c:\\temp\\input.dat' COMMENTS INTRODUCED BY '//' ...

        Kommentare sind nur am Anfang einer neuen Zeile zulässig.

        Wenn die COMMENTS INTRODUCED BY-Klausel weggelassen wird, darf die Datendatei keine Kommentare enthalten, weil diese als Daten interpretiert werden.

      • COMPRESSED-Klausel   Geben Sie COMPRESSED an, wenn die zu ladenden Daten in der Eingabedatei komprimiert sind. Der Datenbankserver dekomprimiert die Daten, bevor sie geladen werden. Wenn Sie COMPRESSED angeben und die Daten nicht komprimiert sind, schlägt LOAD fehl und gibt einen Fehler zurück.

        Geben Sie AUTO COMPRESSED an, damit der Datenbankserver ermitteln kann, ob die Daten in der Eingabedatei komprimiert sind oder nicht. Wenn dies der Fall ist, dekomprimiert der Datenbankserver die Daten, bevor sie geladen werden.

        Geben Sie NOT COMPRESSED an, um anzuzeigen, dass die Daten in der Eingabedatei nicht komprimiert werden. Sie können auch NOT COMPRESSED angeben, wenn die Daten komprimiert sind, Sie aber nicht wollen, dass der Datenbankserver sie entkomprimiert. In diesem Fall bleiben die Daten in der Datenbank komprimiert. Wenn hingegen eine Datei sowohl verschlüsselt als auch komprimiert ist, können Sie NOT ENCRYPTED nicht ohne NOT COMPRESSED verwenden.

      • COMPUTES-Klausel   Standardmäßig ist diese Option ON, damit eine Neuberechnung berechneter Spalten möglich ist. Mit COMPUTES auf OFF werden Neuberechnungen von berechneten Spalten deaktiviert. COMPUTES OFF ist beispielsweise sinnvoll, wenn Sie eine Datenbank neu aufbauen und eine Tabelle eine berechnete Spalte umfasst, die eine noch nicht erstellte benutzerdefinierte Funktion aufruft. Der Neuaufbau würde fehlschlagen, wenn diese Option nicht auf OFF gesetzt ist.

        Das Dienstprogramm Unload (dbunload) schreibt LOAD TABLE-Anweisungen mit COMPUTES auf OFF.

      • DEFAULTS-Klausel   Standardmäßig hat DEFAULTS die Einstellung OFF. Wenn DEFAULTS auf OFF gesetzt ist, wird allen Spalten, die in der Spaltenliste nicht vorhanden sind, NULL zugeordnet. Wenn DEFAULTS auf OFF gesetzt ist und eine nicht nullwertfähige Spalte aus der Liste ausgelassen wird, versucht der Datenbankserver, die leere Zeichenfolge in den Datentyp der Spalte zu konvertieren. Wenn DEFAULTS auf ON gesetzt ist und die Spalte einen Standardwert hat, wird dieser Wert benutzt.

      • DELIMITED BY-Klausel   Verwenden Sie diese Klausel, um die Spaltentrennzeichenfolge anzugeben. Das Standardtrennzeichen für Spalten ist ein Komma. Sie können jedoch auch eine beliebige Zeichenfolge mit einer Länge von bis zu 255 Byte verwenden (z.B. ... DELIMITED BY '###' ...). Der von Ihnen angegebene Begrenzer ist eine Zeichenfolge und muss in Anführungszeichen stehen. Wenn Sie Werte angeben wollen, die durch Tabstops getrennt werden, könnten Sie z.B. die hexadezimale Escape-Sequenz für das Tabulatorzeichen (9), ... DELIMITED BY '\x09' ..., verwenden.

      • ENCODING-Klausel   Verwenden Sie diese Klausel, um die Zeichenkodierung anzugeben, die für die in die Datenbank eingelesenen Daten verwendet wird. Die ENCODING-Klausel kann nur im TEXT-Format verwendet werden.

        Wenn während eines Ladevorgangs ein Konvertierungsfehler auftritt, wird er entsprechend der Einstellung der on_charset_conversion_failure-Option gemeldet. Weitere Hinweise finden Sie unter on_charset_conversion_failure-Option [Datenbank].

        Weitere Hinweise zum Bezug der Liste der unterstützten SQL Anywhere-Kodierungen finden Sie unter Unterstützte Zeichensätze.

        Geben Sie die BYTE ORDER-Klausel an, um eine BOM (Byte Order Mark) in die Daten einzubeziehen.

      • ENCRYPTED-Klausel   Verwenden Sie diese Klausel, um Verschlüsselungseinstellungen anzugeben. Wenn Sie verschlüsselte Daten laden, geben Sie ENCRYPTED KEY gefolgt vom Schlüssel an, der bei der Verschlüsselung der Daten in der Eingabedatei verwendet wurde.

        Geben Sie NOT ENCRYPTED an, um anzuzeigen, dass die Daten in der Eingabedatei nicht verschlüsselt sind. Sie können auch NOT ENCRYPTED angeben, wenn die Daten verschlüsselt sind, Sie aber nicht wollen, dass der Datenbankserver sie dekomprimiert. In diesem Fall bleiben die Daten in der Datenbank komprimiert. Wenn hingegen eine Datei sowohl verschlüsselt als auch komprimiert ist, können Sie NOT ENCRYPTED nicht ohne NOT COMPRESSED verwenden.

      • ESCAPE CHARACTER-Klausel   Verwenden Sie diese Klausel, um das Escapezeichen anzugeben, das in den Daten verwendet wird. Das Standard-Escapezeichen für Zeichen, die als hexadezimale Codes und Symbole gespeichert werden, ist ein Backslash (\), so ist beispielsweise \x0A die Zeilenendmarke. Mit der ESCAPE CHARACTER-Klausel kann das geändert werden. Wenn Sie beispielsweise das Ausrufezeichen als Escapezeichen verwenden möchten, geben Sie Folgendes ein:
        ESCAPE CHARACTER '!'

        Als Escapezeichen kann nur ein Einbyte-Zeichen verwendet werden.

      • ESCAPES-Klausel   Verwenden Sie diese Klausel, um zu steuern, ob Escapezeichen erkannt werden. Wenn ESCAPES aktiviert ist (Standardwert), werden die Zeichen nach dem Backslashzeichen vom Datenbankserver als Sonderzeichen erkannt und interpretiert. Zeilenumbruch-Zeichen können als Kombination \n eingefügt werden, und andere Zeichen können als hexadezimale ASCII-Codes in die Daten eingefügt werden, wie zum Beispiel als \x09 für das Tabulatorzeichen. Eine Sequenz von zwei Backslashes ( \\ ) wird als ein einzelner Backslash interpretiert. Ein Backslash gefolgt von einem beliebigen Zeichen außer n, x, X oder \ wird als zwei separate Zeichen interpretiert. Zum Beispiel werden mit \q ein Backslash und der Buchstabe q eingefügt.

      • FORMAT-Klausel   Verwenden Sie diese Klausel, um das Format der Datenquelle anzugeben, von der Sie Daten laden. Wenn Sie TEXT angeben, werden Eingabezeilen als Zeichen vorausgesetzt (wie von der ENCODING-Option festgelegt), eine Zeile pro Ausgabezeile, wobei die Werte durch das Spalten-Trennzeichen voneinander getrennt werden. Wenn Sie BCP wählen, wird der Import von Adaptive Server Enterprise-generierten BCP-Ausgabedateien ermöglicht, die BLOBs enthalten.

      • HEXADECIMAL-Klausel   Verwenden Sie diese Klausel, um anzugeben, ob Binärwerte als hexadezimale Werte gelesen werden. Standardmäßig ist HEXADECIMAL auf ON gesetzt. Wenn HEXADECIMAL ON ist, werden binäre Spaltenwerte als 0xnnnnnn... gelesen, wobei 0x eine Null, gefolgt vom Buchstaben x ist, und jedes n ein hexadezimales Zeichen ist. Es ist wichtig, HEXADECIMAL ON zu verwenden, wenn Sie mit Mehrbyte-Zeichensätzen arbeiten.

        Die HEXADECIMAL-Klausel kann nur mit der FORMAT TEXT-Klausel verwendet werden.

      • ORDER-Klausel   Verwenden Sie diese Klausel, um die Reihenfolge anzugeben, in der die Daten beim Laden zu sortieren sind. Die Standardeinstellung für ORDER ist ON. Wenn ORDER auf ON gesetzt ist und ein Clustered-Index deklariert wurde, sortiert LOAD TABLE die Eingabedaten nach dem Clustered-Index und fügt Spalten in derselben Reihenfolge ein. Wenn die zu ladenden Daten bereits sortiert sind, müssen Sie ORDER auf OFF setzen. Weitere Hinweise finden Sie unter Clustered-Indizes verwenden.

      • PCTFREE-Klausel   Verwenden Sie diese Klausel, um den Prozentsatz des freien Speicherplatzes anzugeben, den Sie für jede Tabellenseite reservieren möchten. Diese Einstellung überschreibt jede permanente Einstellung für die Tabelle, jedoch nur für die Dauer des Ladevorgangs und nur bei den Daten, die geladen werden. Der Wert für Prozent_freier_Speicherplatz ist ein Ganzzahlwert zwischen 0 und 100. Der Wert 0 gibt an, dass kein freier Speicherplatz auf den einzelnen Seiten zur Verfügung stehen darf. Jede Seite muss komplett vollgeschrieben werden. Ein hoher Wert führt dazu, dass jede Zeile auf eine eigene Seite geschrieben wird. Weitere Hinweise zu PCTFREE finden Sie unter CREATE TABLE-Anweisung.

      • QUOTE-Klausel   Die QUOTE-Klausel ist nur für TEXT-Daten bestimmt. Die Zeichenfolge wird vor und nach den Zeichenfolgenwerten gesetzt. Der Standardwert ist ein Apostroph.

      • QUOTES-Klausel   Verwenden Sie diese Klausel, um anzugeben, ob Zeichenfolgen in Anführungszeichen gesetzt werden. Wenn QUOTES aktiviert ist (der Standardwert), wird von LOAD TABLE erwartet, dass alle Zeichenfolgen von Anführungszeichen oder Apostrophen umschlossen sind. Es können sowohl Apostrophe als auch Anführungszeichen verwendet werden. Das erste Zeichen dieser Art, das in der Eingabedatei gefunden wird, wird als Zeichen für Anführungszeichen für die Zeichenfolge behandelt. Die Zeichenfolgen müssen durch ein jeweils passendes Anführungszeichen abgeschlossen werden.

        Wenn QUOTES ON ist, können Spaltenbegrenzungszeichenfolgen in Spaltenwerte einbezogen werden. Es wird auch vorausgesetzt, dass Apostrophe oder Anführungszeichen nicht Teil des Wertes sind. Daher wird die folgende Zeile wie zwei Werte behandelt und nicht wie drei, obwohl es ein Komma in der Adresse gibt. Außerdem werden die Anführungszeichen um die Adresse nicht in die Datenbank eingefügt.

        '123 High Street, Anytown',(715)398-2354

        Wenn Sie bei QUOTES ON ein Apostroph oder ein Anführungszeichen in einen Wert einbeziehen möchten, müssen Sie zwei Apostrophe oder Anführungszeichen verwenden. Die folgende Zeile enthält in der dritten Spalte einen Wert, der ein Apostrophzeichen ist:

        '123 High Street, Anytown','(715)398-2354',''''

      • ROW DELIMITED BY-Klausel   Verwenden Sie diese Klausel, um die Zeichenfolge anzugeben, die das Ende eines Eingabedatensatzes anzeigt. Die Standardtrennzeichenfolge ist eine Zeilenendmarke (\n). Sie können jedoch auch eine beliebige Zeichenfolge mit einer Länge von bis zu 255 Byte verwenden (z.B. ROW DELIMITED BY '###'). Dieselben Formatierungsanforderungen gelten auch für andere SQL-Zeichenfolgen. Wenn Sie Werte angeben wollen, die durch Tabulatoren getrennt werden, könnten Sie z.B. die hexadezimale Escape-Sequenz für das Tabulatorzeichen (9) verwenden, ROW DELIMITED BY '\x09'. Wenn Ihre Trennzeichenfolge ein \n enthält, entspricht es entweder \r\n oder \n.

      • SKIP-Klausel   Mit dieser Klausel geben Sie an, ob Zeilen am Anfang einer Datei ignoriert werden sollen. Das Argument Ganzzahl gibt die Anzahl der zu überspringenden Zeilen an. Sie können diese Klausel verwenden, um beispielsweise Zeilen mit Spaltenüberschriften zu überspringen. Wenn als Zeilentrennzeichen nicht der Standardwert (Zeilenendmarke) eingestellt ist, kann es sein, dass ein Überspringen nicht korrekt funktioniert, wenn innerhalb der in Anführungszeichen stehenden Daten solche Zeilentrennzeichen enthalten sind.

      • STRIP-Klausel   Verwenden Sie diese Klausel, um anzugeben, ob bei Werten ohne Anführungszeichen führende oder nachgestellte Leerzeichen entfernt werden sollen, bevor sie eingefügt werden. Die Option STRIP kann mit den folgenden Optionen verwendet werden:

        • STRIP OFF   Voran- bzw. nachgestellte Leerzeichen werden nicht entfernt.

        • STRIP LTRIM   Führende Leerzeichen werden entfernt.

        • STRIP RTRIM   Nachgestellte Leerzeichen werden entfernt.

        • STRIP BOTH   Sowohl führende als auch nachgestellte Leerzeichen werden entfernt.

        • STRIP ON   Veraltet. Äquivalent mit STRIP RTRIM

      • WITH CHECKPOINT-Klausel   Mit dieser Klausel geben Sie an, ob ein Checkpoint gesetzt werden soll. Die Standardeinstellung ist OFF. Wenn diese Klausel auf ON gesetzt ist, wird ein Checkpoint gesetzt, nachdem die Anweisung erfolgreich abgeschlossen und im Log verzeichnet ist. Wenn diese Klausel auf ON eingestellt ist und die Datenbank eine automatische Wiederherstellung erfordert, bevor ein CHECKPOINT gesetzt wurde, muss die für das Laden der Tabelle verwendete Datendatei vorhanden sein, damit die Wiederherstellung abgeschlossen werden kann. Wenn WITH CHECKPOINT ON angegeben ist und eine anschließende Wiederherstellung erforderlich ist, wird sie nach dem Checkpoint gestartet, und die Datendatei wird nicht benötigt.

        Die Datendateien sind unabhängig von den Angaben für diese Klausel erforderlich, falls die Datenbank beschädigt wird und Sie eine Sicherung und die aktuelle Logdatei verwenden müssen.

        Achtung

        Wenn Sie die Datenbankoption conversion_error auf OFF setzen, laden Sie möglicherweise fehlerhafte Daten in Ihre Tabelle, ohne dass ein Fehler protokolliert wird. Wenn Sie WITH CHECKPOINT ON nicht angeben und die Datenbank eine Wiederherstellung erfordert, kann diese fehlschlagen, da conversion_error während der Wiederherstellung auf ON (Standardwert) gesetzt ist. Es wird empfohlen, Tabellen nur zu laden, wenn conversion_error auf ON eingestellt ist und WITH CHECKPOINT ON gesetzt wurde.

        Weitere Hinweise zur conversion_error-Option finden Sie unter conversion_error-Option [Kompatibilität].

      • WITH { FILE NAME | ROW | CONTENT } LOGGING   Verwenden Sie diese Klausel, um zu steuern, wie detailliert während eines Ladevorgangs im Transaktionslog protokolliert wird. Folgende Protokollierungsebenen sind möglich:

        • WITH FILE NAME LOGGING-Klausel   Die WITH FILE NAME LOGGING-Klausel bewirkt, dass nur die LOAD TABLE-Anweisung ins Transaktionslog geschrieben wird. Um konsistente Ergebnisse zu garantieren, wenn das Transaktionslog während der Wiederherstellung verwendet wird, muss die Datei, die für den ursprünglichen Ladevorgang verwendet wurde, an ihrem ursprünglichen Speicherort vorhanden sein und die ursprünglichen Daten enthalten. Diese Stufe der Protokollierung beeinträchtigt die Performance nicht. Allerdings sollten Sie sie nicht verwenden, wenn Ihre Datenbank in eine Spiegel- oder Synchronisationsumgebung integriert ist. Diese Stufe kann auch nicht verwendet werden, wenn aus einem Ausdruck oder einer Clientdatei geladen wird.

          Wenn Sie in der LOAD TABLE-Anweisung keine Protokollierungsstufe angeben, ist WITH FILE NAME LOGGING die Standardstufe bei folgender Eingabe:

          • FROM Dateinamen-Ausdruck
          • USING FILE Dateinamen-Ausdruck

        • WITH ROW LOGGING-Klausel   Die WITH ROW LOGGING-Klausel bewirkt, dass jede geladene Zeile im Transaktionslog als INSERT-Anweisung protokolliert wird. Diese Protokollierungsstufe wird für Datenbanken in einer Synchronisationsumgebung empfohlen und bei der Datenbankspiegelung unterstützt. Wenn Sie allerdings große Datenmengen laden, kann diese Protokollierungsart die Performance beeinträchtigen und ein umfangreiches Transaktionslog bewirken.

          Diese Stufe ist auch für Datenbanken ideal, in denen die Tabelle, in die geladen wird, nicht-deterministische Werte enthält, wie etwa berechnete Spalten oder CURRENT TIMESTAMP-Standardwerte.

        • WITH CONTENT LOGGING-Klausel   Die Klausel WITH CONTENT LOGGING bewirkt, dass der Datenbankserver den Inhalt der Zeilen, die geladen werden, in Abschnitte zusammenfasst. Diese Abschnitte können später in Zeilen wiederhergestellt werden, zum Beispiel bei der Wiederherstellung aus einem Transaktionslog. Beim Laden großer Datenmengen hat diese Protokollierungsart wenig Auswirkungen auf die Performance und bietet mehr Datenschutz. Allerdings entsteht dabei ein sehr großes Transaktionslog. Diese Protokollierungsstufe wird für Datenbanken in einer Spiegelumgebung empfohlen, oder wenn die Originaldateien nicht für eine spätere Wiederherstellung aufbewahrt werden.

          Die Klausel WITH CONTENT LOGGING kann nicht verwendet werden, wenn die Datenbank in einer Synchronisationsumgebung integriert ist.

          Wenn Sie in der LOAD TABLE-Anweisung keine Protokollierungsstufe angeben, ist WITH CONTENT LOGGING die Standardstufe bei folgender Eingabe:

          • USING CLIENT FILE Clientdateinamen-Ausdruck

          • USING VALUE Wertausdruck

          • USING COLUMN Spaltenausdruck

  • Statistikbegrenzungsoption   Mit diesen Optionen können Sie die Anzahl der Spalten begrenzen, für die Statistiken während der Ausführung von LOAD TABLE generiert werden. Andernfalls werden für alle Spalten Statistiken generiert. Sie sollten diese Klausel nur verwenden, wenn Sie sicher sind, dass Statistiken für manche Spalten nicht verwendet werden. Sie können ON ALL COLUMNS (Standardeinstellung), OFF, ON KEY COLUMNS oder eine Liste von Spalten, für die Statistiken generiert werden sollen, angeben.

Bemerkungen

LOAD TABLE ermöglicht das effiziente Einfügen großer Datenmengen aus einer Datei in die Datenbanktabelle. LOAD TABLE ist effektiver als die Interactive SQL-Anweisung INPUT.

LOAD TABLE legt eine Schreibsperre für die gesamte Tabelle fest. Für Basistabellen und globale temporäre Tabellen wird ein Festschreiben durchgeführt. Bei lokalen temporären Tabellen wird kein COMMIT durchgeführt.

Wenn Sie versuchen, LOAD TABLE mit einer Tabelle zu verwenden, für die ein Soforttextindex aufgebaut wird oder die von einer Sofortansicht referenziert wird, schlägt das Laden fehl. Dies kommt bei Nicht-Soforttextindizes oder materialisierten Ansichten nicht vor. Es wird aber empfohlen, die Daten in abhängigen Indizes und materialisierten Ansichten zu kürzen, bevor die LOADTABLE-Anweisung für eine Tabelle ausgeführt wird, und dann die Indizes und materialisierten Ansichten zu aktualisieren. Weitere Hinweise finden Sie unter TRUNCATE-Anweisung und TRUNCATE TEXT INDEX-Anweisung.

Verwenden Sie die LOAD TABLE-Anweisung nicht bei einer temporären Tabelle, für die ON COMMIT DELETE ROWS während der Erstellung entweder explizit oder standardmäßig angegeben wurde. Allerdings können Sie LOAD TABLE verwenden, wenn ON COMMIT PRESERVE ROWS oder NOT TRANSACTIONAL angegeben wurde.

Bei FORMAT TEXT wird ein NULL-Wert angezeigt, indem gar kein Wert angegeben wird. Beispiel: Wenn drei Werte erwartet werden und die Datei 1,,'Fred', enthält, dann sind die eingefügten Werte 1, NULL und Fred. Wenn die Datei 1,2, enthält, werden die Werte 1, 2 und NULL eingefügt. Werte, die nur aus Leerstellen bestehen, werden ebenfalls als NULL angesehen. Beispiel: Wenn die Datei 1, ,'Fred', enthält, dann werden die Werte 1, NULL und Fred eingefügt. Alle anderen Werte werden als Nicht-NULL angesehen. Beispiel: '' (Apostroph Apostroph) ist eine leere Zeichenfolge. "NULL" ist eine Zeichenfolge, die vier Buchstaben enthält.

Wenn eine Spalte, die mit LOAD TABLE geladen wird, NULL nicht zulässt und der Dateiwert NULL ist, erhalten nummerische Werte den Wert "0" (Null) und Zeichenspalten eine leere Zeichenfolge ('') zugeordnet. Wenn eine Spalte, die mit LOAD TABLE geladen wird, NULL zulässt und der Dateiwert NULL ist, dann ist der Spaltenwert NULL (bei allen Typen).

Wenn die Tabelle die Spalten a, b und c enthält und die Eingabedaten a, b und c enthalten, aber die LOAD-Anweisung a und b als Spalten angibt, in die Daten geladen werden sollen, werden die folgenden Werte in die Spalte c eingefügt:

  • Wenn DEFAULT ON angegeben ist und Spalte c einen Standardwert hat, wird der Standardwert verwendet.

  • Wenn die Spalte c keinen Standardwert definiert hat und NULL-Werte zulässt, wird NULL benutzt.

  • Wenn Spalte c keinen Standardwert hat und keine NULL-Werte zulässt, wird entweder eine Null (0) oder eine leere Zeichenfolge ('') verwendet bzw. ein Fehler zurückgegeben, abhängig vom Datentyp der Spalte.

LOAD TABLE und Spaltenstatistiken   Um Histogramme zu Tabellenspalten zu erstellen, erfasst LOAD TABLE statistische Daten über Spalten, wenn Daten geladen werden. Die Histogramme werden vom Optimierer verwendet. Weitere Hinweise zur Verwendung von Spaltenstatistiken durch den Optimierer finden Sie unter Optimiererschätzungen und Spaltenstatistiken.

Es folgen zusätzliche Tipps zum Ladevorgang und zu Spaltenstatistiken:

  • LOAD TABLE speichert Statistiken für Basistabellen für die zukünftige Verwendung. Die Anweisung speichert keine Statistiken für globale temporäre Tabellen.

  • Wenn Sie in eine leere Tabelle laden, die früher Daten enthalten haben könnte, lohnt es sich möglicherweise, zunächst die statistischen Daten für die Spalte zu löschen, bevor Sie die LOAD TABLE-Anweisung ausführen. Weitere Hinweise finden Sie unter DROP STATISTICS-Anweisung.

  • Wenn beim Durchführen einer LOAD TABLE-Anweisung für eine Spalte Spaltenstatistiken existieren, werden die Statistiken für die Spalte nicht neu berechnet. Stattdessen werden die Statistiken für die neuen Daten in die vorhandenen Statistiken eingefügt. Wenn also die vorhandenen Spaltenstatistiken veraltet sind, werden sie nach dem Laden von neuen Daten in die Spalte weiterhin veraltet sein. Wenn Sie vermuten, dass die Spaltenstatistiken veraltet sind, sollten Sie sie vor oder nach dem Ausführen der LOAD TABLE-Anweisung aktualisieren. Weitere Hinweise finden Sie unter Spaltenstatistiken aktualisieren, um die Performance des Optimierers zu verbessern.

  • LOAD TABLE fügt Statistiken nur hinzu, wenn die Tabelle fünf oder mehr Zeilen umfasst. Wenn die Tabelle mindestens fünf Zeilen enthält, werden Histogramme folgendermaßen geändert:

    Daten bereits in der Tabelle? Histogramm vorhanden? Maßnahme
    Ja Ja Änderungen in die bestehenden Histogramme integrieren
    Ja Nein Keine Histogramme erstellen
    Nein Ja Änderungen in die bestehenden Histogramme integrieren
    Nein Nein Neue Histogramme aufbauen
  • LOAD TABLE generiert keine Statistiken für Spalten, die NULL für mehr als 90% der zu ladenden Zeilen enthalten.

Dynamisch aufgebaute Dateinamen verwenden   Sie können eine LOAD TABLE-Anweisung mit einem dynamisch aufgebauten Dateinamen ausführen, indem Sie den Dateinamen einer Variablen zuordnen und den Variablennamen in der LOAD TABLE-Anweisung verwenden.

Berechtigungen

Die Berechtigungen für das Ausführen einer LOAD TABLE-Anweisung hängen wie folgt von der Datenbankserver-Option –gl ab:

  • Wenn die Option -gl ALL lautet, müssen Sie der Eigentümer der Tabelle sein, oder über DBA-Berechtigungen bzw. ALTER-Berechtigungen verfügen.

  • Wenn -gl auf DBA gesetzt ist, benötigen Sie DBA-Berechtigungen.

  • Wenn -gl auf NONE gesetzt ist, wird LOAD TABLE nicht zugelassen.

Weitere Hinweise finden Sie unter Serveroption -gl.

Erfordert eine Exklusivsperre der Tabelle

Folgendes gilt beim Lesen einer Datei von einem Clientcomputer:

  • READCLIENTFILE-Datenbankberechtigung ist erforderlich. Weitere Hinweise finden Sie unter READCLIENTFILE-Datenbankberechtigung.

  • Leseberechtigungen sind in dem Verzeichnis erforderlich, aus dem gelesen werden soll.

  • Die Datenbankoption allow_read_client_file muss aktiviert sein. Weitere Hinweise finden Sie unter allow_read_client_file-Option [Datenbank].

  • Die Sicherheitsfunktion read_client_file muss aktiviert sein. Weitere Hinweise finden Sie unter Serveroption -sf.

Nebenwirkungen

Automatisches Festschreiben (Autocommit).

Einfügungen werden in den Logdateien nicht verzeichnet, wenn nicht die WITH ROW LOGGING-Klausel angegeben ist. Daher werden je nach Protokollierungstyp die eingefügten Zeilen möglicherweise nicht wiederhergestellt, wenn ein Fehler auftritt. Außerdem sollte die LOAD TABLE-Anweisung ohne WITH ROW LOGGING-Klausel nie in Datenbanken verwendet werden, die als MobiLink-Clients fungieren, oder in einer Datenbank, die in ein SQL Remote-Replikationssystem eingebunden ist, weil diese Technologien Änderungen über die Analyse der Logdatei replizieren.

Die LOAD TABLE-Anweisung löst keine Trigger aus, die der Tabelle zugeordnet sind.

Ein Checkpoint wird zu Beginn des Vorgangs ausgeführt. Ein zweiter Checkpoint wird am Ende durchgeführt, wenn WITH CHECKPOINT ON angegeben ist.

Spaltenstatistiken werden aktualisiert, wenn eine signifikante Menge von Daten geladen wird.

Siehe auch
Standards und Kompatibilität
  • SQL/2003   Erweiterung des Herstellers

Beispiel

Hier folgt ein Beispiel für LOAD TABLE. Zuerst wird eine Tabelle erstellt, in die dann Daten geladen werden, wobei eine Datei mit dem Namen input.txt verwendet wird.

CREATE TABLE t( a CHAR(100), let_me_default INT DEFAULT 1, c CHAR(100) );

Nachfolgend wird der Inhalt der Datei input.txt gezeigt:

ignore_me, this_is_for_column_c, this_is_for_column_a

Die folgende LOAD-Anweisung lädt die Datei input.txt:

LOAD TABLE T ( filler(), c, a ) FROM 'input.txt' FORMAT TEXT DEFAULTS ON;

Der Befehl SELECT * FROM t ergibt folgende Ergebnismenge:

a let_me_default c
this_is_for_column_a 1 this_is_for_column_c

Im folgenden Beispiel wird die LOAD TABLE-Anweisung über die Anweisung IMMEDIATE mit einem dynamisch aufgebauten Dateinamen ausgeführt:

CREATE PROCEDURE LoadData( IN from_file LONG VARCHAR )
BEGIN
    DECLARE path LONG VARCHAR;
    SET path = 'd:\\data\\' || from_file;
    LOAD TABLE MyTable FROM path;
END;

Das folgende Beispiel lädt UTF-8-kodierte Tabellendaten in 'mytable':

LOAD TABLE mytable FROM 'mytable_data_in_utf8.dat' ENCODING 'UTF-8';