Importiert Massendaten aus einer externen Datei in eine Datenbanktabelle.
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 }
Dateinamenausdruck: 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 | XML Zeile-XPath ( Spalte-XPath,... ) [ NAMESPACES Namespace ] } | SHAPEFILE | 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
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.
Wenn die LOAD TABLE-Anweisung mit der USING FILE-Klausel verwendet wird, können Sie Meldungen zum Verarbeitungsfortschritt anfordern. Siehe progress_messages-Option.
Sie können auch mithilfe der Verbindungseigenschaft "Progress" feststellen, wie viel von der Anweisung ausgeführt wurde. Siehe Progress-Verbindungseigenschaft.
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.
Wenn die LOAD TABLE-Anweisung mit der USING CLIENT FILE-Klausel verwendet wird, können Sie Meldungen zum Verarbeitungsfortschritt anfordern. Siehe progress_messages-Option.
Sie können auch mithilfe der Verbindungseigenschaft "Progress" feststellen, wie viel von der Anweisung ausgeführt wurde. Siehe Progress-Verbindungseigenschaft.
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 ENCODING-Klausel nicht angegeben ist:
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 Escapesequenz 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 nicht im BCP-Format verwendet werden. Im SHAPEFILE-Format wird standardmäßig die Kodierung ISO-8859-1 verwendet, wenn die ENCODING-Klausel nicht angegeben ist.
Wenn während eines Ladevorgangs ein Konvertierungsfehler auftritt, wird er entsprechend der Einstellung der on_charset_conversion_failure-Option gemeldet. Siehe on_charset_conversion_failure-Option.
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 FORMAT TEXT (Standardwert) angeben, werden Eingabezeilen als Zeichen vorausgesetzt (wie von der ENCODING-Option festgelegt), eine Zeile pro Ausgabezeile, wobei die Werte durch die Spalten-Trennzeichenfolge voneinander getrennt werden.
Wenn Sie FORMAT BCP wählen, wird der Import von Adaptive Server Enterprise-generierten BCP-Ausgabedateien ermöglicht.
Die Auswahl von FORMAT SHAPEFILE ermöglicht das Importieren von ESRI-Formdateien. Die Datenquelle muss geladen werden unter Verwendung von FROM Dateinamenausdruck oder USING FILE Dateinamenausdruck, wobei Dateinamenausdruck sich auf eine ESRI-Formdatei mit der Dateierweiterung .shp bezieht. Die zugeordneten .shx- und .dbf-Dateien müssen sich in demselben Verzeichnis befinden wie die .shp-Datei und denselben Basisdateinamen aufweisen. Bei FORMAT SHAPEFILE wird für die Optionen LOAD TABLE und OPENSTRING ENCODING standardmäßig ISO-8859-1 verwendet.
Wenn Sie FORMAT SHAPEFILE angeben, sind nur die folgenden Ladeoptionen zulässig:
Weitere Hinweise zur Unterstützung von ESRI-Formdateien finden Sie unter Unterstützung von ESRI-Formdateien.
Wenn Sie FORMAT XML angeben, sind nur die folgenden Ladeoptionen zulässig:
Die FORMAT XML-Klausel verwendet die folgenden Parameter:
Zeile-XPath Eine Zeichenfolge oder Variable, die eine XPath-Abfrage enthält. Mit XPath können Sie Muster angeben, die die Struktur des abzufragenden XML-Dokumentes beschreiben. Das in diesem Argument enthaltene XPath-Muster wählt die Knoten aus dem XML-Dokument. Jeder Knoten, der mit der XPath-Abfrage im Zeile-XPath-Argument übereinstimmt, erzeugt eine Zeile in der Tabelle.
Meta-Eigenschaften können nur in Zeile-XPath-Argumenten der FORMAT XML-Klausel angegeben werden. Auf eine Meta-Eigenschaft wird innerhalb einer XPath-Abfrage so zugegriffen, als handele es sich um ein Attribut. Wenn Namespaces nicht angegeben wird, bindet das System standardmäßig das Präfix "mp" an den Uniform Resource Identifier (URI) urn:ianywhere-com:sa-xpath-metaprop. Wenn Namespaces angegeben wird, muss dieser URI an "mp" oder an ein anderes Präfix gebunden werden, damit auf die Meta-Eigenschaften der Abfrage zugegriffen werden kann. Meta-Eigenschaften berücksichtigen die Groß- und Kleinschreibung. Folgende Meta-Eigenschaften werden unterstützt:
@mp:id Gibt eine ID für einen Knoten zurück, der innerhalb des XML-Dokumentes eindeutig ist. Die ID für einen bestimmten Knoten in einem bestimmten Dokument kann sich ändern, falls der Datenbankserver neu gestartet wird. Der Wert dieser Meta-Eigenschaft steigt mit der Dokumentordnung.
@mp:localname Gibt den lokalen Teil des Knotennamens zurück oder NULL, falls der Knoten keinen Namen trägt.
@mp:prefix Gibt den Präfixteil des Knotennamens zurück oder NULL, falls der Knoten keinen Namen trägt oder falls der Name kein Präfix hat.
@mp:namespaceuri Gibt den URI des Namespaces zurück, dem der Knoten angehört, bzw. NULL, falls der Knoten sich in keinem Namespace befindet.
@mp:xmltext Gibt eine Unterstruktur des XML-Dokuments in XML-Form zurück. Wenn Sie z.B. einen internen Knoten suchen, können Sie diese Meta-Eigenschaft dafür benutzen, eine XML-Zeichenfolge zurückzugegeben, und nicht verkettete Werte der untergeordneten Textknoten.
Spalte-XPath Eine Zeichenfolge oder Variable, die das Schema der Ergebnismenge angibt und festlegt, wie der Wert für die einzelnen Spalten in der Ergebnismenge gefunden wird. Wenn ein FORMAT XML-Klauselausdruck mehr als einen Knoten findet, wird nur der erste Knoten in der Dokumentordnung verwendet. Falls es sich bei dem Knoten nicht um einen Textknoten handelt, wird das Ergebnis gefunden, indem alle untergeordneten Elemente des Textknotens angehängt werden. Wenn ein FORMAT XML-Klauselausdruck mit keinem der Knoten übereinstimmt, ist die Spalte für die betreffende Zeile NULL.
Namespace Eine Zeichenfolge oder Variable, die ein XML-Dokument enthält. Die bekannten Namespaces ("in-scope namespaces") für die Abfrage werden aus dem Wurzelelement des Dokumentes entnommen.
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. Siehe 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 Escapesequenz 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 Nicht mehr empfohlen. Ä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.
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.
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:
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.
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. Siehe 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 Datenbankspiegelung Wenn Sie bei einer Datenbankspiegelung eine LOAD TABLE-Anweisung mit einer Basistabelle ausführen, müssen Sie entweder WITH ROW LOGGING oder WITH CONTENT LOGGING als Protokollierungsstufe für die Anweisung angeben. Diese Klauseln ermöglichen es, dass die geladenen Daten im Transaktionslog aufgezeichnet werden, damit sie auch in die Spiegeldatenbank geladen werden können. Wenn diese Klauseln nicht angegeben werden, wird ein Fehler gemeldet. Siehe Daten mit der LOAD TABLE-Anweisung importieren.
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. Siehe 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. Siehe 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.
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.
Siehe -gl - dbeng12/dbsrv12-Serveroption.
Erfordert eine Exklusivsperre der Tabelle
Folgendes gilt beim Lesen einer Datei von einem Clientcomputer:
READCLIENTFILE-Datenbankberechtigung ist erforderlich. Siehe READCLIENTFILE-Datenbankberechtigung.
Leseberechtigungen sind in dem Verzeichnis erforderlich, aus dem gelesen werden soll.
Die Datenbankoption allow_read_client_file muss aktiviert sein. Siehe allow_read_client_file-Option.
Die Sicherheitsfunktion read_client_file muss aktiviert sein. Siehe -sf - dbeng12/dbsrv12-Serveroption.
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.
SQL/2008 Erweiterung des Herstellers.
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'; |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |