Verwenden Sie diese Anweisung, um Daten aus einer Datenquelle in eine Datei zu entladen.
UNLOAD Datenquelle { TO Dateiname | INTO FILE Dateiname | INTO CLIENT FILE Client-Dateiname | INTO VARIABLE Variablenname } [ Entladeoption ... ]
Datenquelle [ FROM ] [ TABLE ] [ Eigentümer.]Tabellenname | [ FROM ] [ MATERIALIZED VIEW ] [ Eigentümer.]Name_materialisierte_Ansicht | Select-Anweisung
Dateiname : Zeichenfolge | Variable
Client-Dateiname : Zeichenfolge | Variable
Entladeoption : APPEND { ON | OFF } | BYTE ORDER MARK { ON | OFF } | { COMPRESSED | NOT COMPRESSED } | { COMPRESSED | NOT COMPRESSED } | COLUMN DELIMITED BY Zeichenfolge | DELIMITED BY Zeichenfolge | ENCODING Kodierung | { ENCRYPTED KEY 'Schlüssel' [ ALGORITHM 'Algorithmus' ] | NOT ENCRYPTED } | ESCAPE CHARACTER Zeichen | ESCAPES { ON | OFF } | FORMAT { TEXT | BCP } | HEXADECIMAL { ON | OFF } | ORDER { ON | OFF } | QUOTE Zeichenfolge | QUOTES { ON | OFF } | ROW DELIMITED BY Zeichenfolge
Kodierung : Zeichenfolge
TO-Klausel Der Name der Datei, in die die Daten entladen werden. Der Pfad des Dateinamens ist relativ zum Startverzeichnis des Datenbankservers. Wenn die Datei nicht existiert, wird sie erstellt. Wenn sie bereits existiert, wird sie überschrieben, sofern nicht APPEND ON angegeben wird.
INTO CLIENT FILE-Klausel Die Datei auf dem Clientcomputer, in die die Daten entladen werden. Wenn die Datei nicht existiert, wird sie erstellt. Wenn sie bereits existiert, wird sie überschrieben, sofern nicht APPEND ON angegeben wird. Der Pfad wird auf dem Clientcomputer relativ zum aktuellen Arbeitsverzeichnis der Clientanwendung aufgelöst.
Hinweise zum Entladen von Daten auf einen Clientcomputer mit SQL Remote finden Sie unter PASSTHROUGH-Anweisung [SQL Remote].
INTO VARIABLE-Klausel Die Variable, in die die Daten entladen werden sollen. Die Variable muss bereits existieren und vom Typ CHAR, NCHAR oder BINARY sein. Mit der APPEND-Option werden die entladenen Daten an die bestehenden Inhalte der Variablen angehängt.
APPEND-Klausel Wenn die APPEND-Klausel ON ist, werden entladene Daten am Ende der angegebenen Datei angefügt. Wenn die APPEND-Klausel OFF ist, ersetzen entladene Daten den Inhalt der angegebenen Datei. APPEND ist standardmäßig OFF. Diese Klausel kann nicht verwendet werden, wenn die Klauseln COMPRESSED oder ENCRYPTED angegeben wurden, bzw, wenn die Datei, in der die Inhalte angehängt werden sollen, komprimiert oder verschlüsselt ist.
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, wenn das Ziel des Entladevorgangs eine lokale oder Clientdatei ist. Wenn die BYTE ORDER MARK-Option ON ist, enthalten UTF-8- und UTF-16-Daten eine BOM. Wenn BYTE ORDER MARK auf OFF steht, wird keine BOM entladen.
COMPRESSED-Klausel Legt fest, ob die Daten komprimiert werden sollen. Standardwert ist NOT COMPRESSED. Sie können die Daten nicht komprimieren, wenn sie angehängt werden sollen (APPEND ON).
Wenn die Datei, in der die Inhalte angehängt werden sollen, komprimiert ist, müssen Sie die Klausel COMPRESSED verwenden.
DELIMITED BY-Klausel Die zwischen Spalten verwendete Zeichenfolge. Das Standardtrennzeichen für Spalten ist ein Komma. Sie können ein alternatives Trennzeichen für Spalten angeben, indem Sie eine Zeichenfolge bereitstellen. Nur das erste Byte (Zeichen) der Zeichenfolge wird als Trennzeichen verwendet.
ENCODING-Klausel Alle Datenbankdaten werden von der Datenbank-Zeichenkodierung in die angegebene Zeichenkodierung konvertiert. Wenn ENCODING nicht angegeben wird, wird die Zeichenkodierung der Datenbank verwendet, und es wird keine Konvertierung durchgeführt.
Weitere Hinweise zum Bezug der Liste der von SQL Anywhere unterstützten Kodierungen finden Sie unter Unterstützte Zeichensätze.
Wenn während eines Entladevorgangs 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].
Mit dem folgenden Beispiel werden die Daten unter Verwendung der UTF-8-Zeichenkodierung entladen:
UNLOAD TABLE mytable TO 'mytable_data_in_utf8.dat' ENCODING 'UTF-8'; |
Geben Sie die BYTE ORDER-Klausel an, um eine BOM (Byte Order Mark) in die Daten einzubeziehen.
ENCRYPTED-Klausel Legt fest, ob die Daten verschlüsselt werden sollen. Wenn Sie NOT ENCRYPTED (Standardvorgabe) angeben, werden die Daten nicht verschlüsselt. Wenn Sie ENCRYPTED KEY mit einem Schlüssel und keinem Algorithmus angeben, werden die Daten mit AES128 und dem angegebenen Schlüssel verschlüsselt. Wenn Sie ENCRYPTED KEY mit einem Schlüssel und einem Algorithmus angeben, werden die Daten mit dem angegebenen Schlüssel und Algorithmus verschlüsselt. Der Algorithmus kann jeder Algorithmus sein, der von der CREATE DATABASE-Anweisung akzeptiert wird. Sie können keine einfache Verschlüsselung angeben. Weitere Hinweise finden Sie unter CREATE DATABASE-Anweisung.
Sie können die Daten nicht verschlüsseln, wenn sie angehängt werden sollen (APPEND ON).
Wenn die Datei, in der die Inhalte angehängt werden sollen, verschlüsselt ist, müssen Sie die Klausel ENCRYPTED verwenden.
ESCAPES-Klausel Wenn ESCAPES aktiviert ist (Standardwert), werden die Zeichen nach dem Backslashzeichen vom Datenbankserver als Sonderzeichen erkannt und interpretiert. Zeilenendmarken 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 Gibt Daten entweder im TEXT-Format oder im BCP-Ausgabeformat aus. Wenn Sie TEXT wählen, werden Eingabezeilen als Textzeichen behandelt, eine Tabellenzeile pro Ausgabezeile, wobei die Werte durch die Spalten-Trennzeichenfolge 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 Standardmäßig ist HEXADECIMAL auf ON gesetzt. Binärspaltenwerte werden als 0xnnnnnn... geschrieben, wobei 0x eine Null, gefolgt von einem x ist und jedes n ist eine hexadezimale Zahl. 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 Wenn ORDER auf ON (Standardwert) gesetzt ist, werden die exportierten Daten nach Clustered-Index geordnet, wenn einer vorhanden ist. Wenn kein Clustered-Index vorhanden ist, werden die exportierten Daten nach Primärschlüsselwerten sortiert. Mit ORDER OFF werden die Daten in derselben Reihenfolge exportiert wie sie bei der Auswahl aus einer Tabelle ohne ORDER BY-Klausel zu sehen ist. Das Exportieren geht langsamer vonstatten, wenn ORDER aktiviert ist. Das Neuladen mit der Anweisung LOAD TABLE erfolgt schneller, weil der Indizierungsschritt einfach ist.
Für UNLOAD Select-Anweisung wird die ORDER-Klausel ignoriert. Sie können die Daten aber immer noch ordnen, indem Sie eine ORDER BY-Klausel in die SELECT-Anweisung aufnehmen.
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 Wenn QUOTES aktiviert ist (Standardwert), werden alle exportierten Zeichenfolgen von Apostrophen umschlossen.
ROW DELIMITED BY-Klausel Verwenden Sie diese Klausel, um die Zeichenfolge anzugeben, die das Ende eines Datensatzes anzeigt. Das Standardtrennzeichen
ist eine Zeilenendmarke (\n). Es kann aber jede Zeichenfolge mit bis zu 255 Byte Länge verwendet werden, z.B. ... ROW DELIMITED BY '###' ...
. Dieselben Formatierungsanforderungen gelten auch für andere SQL-Zeichenfolgen. Wenn Sie Werte angeben wollen, die durch
Tabstops getrennt werden, könnten Sie z.B. die hexadezimale Escape-Sequenz für das Tabulatorzeichen (9), ... ROW DELIMITED BY '\x09' ...
, verwenden. Wenn Ihre Trennzeichenfolge ein \n enthält, wird es entweder \r\n oder \n entsprechen.
Die UNLOAD-Anweisung lässt zu, dass Daten aus einer SELECT-Anweisung in eine kommabegrenzte Datei exportiert werden. Die Ergebnismenge wird nur sortiert, wenn die SELECT-Anweisung selbst eine ORDER BY-Klausel enthält.
Die UNLOAD TABLE-Anweisung ermöglicht effiziente Massenexporte aus einer Datenbanktabelle oder materialisierten Ansicht in eine Datei. Die UNLOAD TABLE-Anweisung ist effizienter als die Interactive SQL-Anweisung OUTPUT und kann von jeder Clientanwendung aufgerufen werden.
Der Datenbankserver oder die Clientanwendung (je nachdem, ob TO FILE oder INTO CLIENT FILE angegeben wurde), müssen Berechtigungen auf der Ebene des Betriebssystems haben, in die angegebene Datei zu schreiben.
Bei UNLOAD TABLE gilt: Beim Entladen von Tabellenspalten mit binären Datentypen schreibt UNLOAD TABLE hexadezimale Zeichenfolgen in der Form von \x nnnn, wobei n eine hexadezimale Ziffer ist. Bei UNLOAD SELECT-Anweisung gilt: Beim Entladen von Ergebnismengen mit binären Datentypen schreibt UNLOAD hexadezimale Zeichenfolgen in der Form von \0xnnnn, wobei n hexadezimal ist.
Wenn Sie eine Datenbank mit Proxytabellen entladen und neu laden, müssen Sie ein externes Login erstellen, um den lokalen Benutzer dem entfernten Benutzer zuzuordnen, selbst wenn der Benutzer für die lokale und die entfernte Datenbank über das gleiche Kennwort verfügt. Sollten Sie kein externes Login haben, kann es sein, dass das erneute Laden am fehlenden Verbindungsaufbau zum Fremdserver scheitert. Weitere Hinweise finden Sie unter Mit externen Logins arbeiten.
Beim Entladen in eine Variable (INTO VARIABLE) wird die Ausgabe wie folgt in einen Zeichensatz umgewandelt:
Der Zeichensatz wird verwendet, der in der ENCODING-Klausel angegeben ist.
Wenn keine ENCODING-Klausel angegeben ist, wird der NCHAR-Zeichensatz der Datenbank verwendet, wenn die Variable vom Typ NCHAR ist, sonst wird der CHAR-Zeichensatz der Datenbank verwendet.
Außerdem muss die gewählte Kodierung zur CHAR-Kodierung der Datenbank passen, wenn die Variable vom CHAR-Typ ist. Die gewählte Kodierung muss zur NCHAR-Kodierung der Datenbank passen, wenn die Variable vom NCHAR-Typ ist. Für BINARY-Variable kann jede Kodierung verwendet werden.
Wenn Sie entscheiden, die entladenen Daten zu komprimieren und zu verschlüsseln, erfolgt erst die Verschlüsselung.
UNLOAD TABLE setzt eine Exklusivsperre für die gesamte Tabelle oder materialisierte Ansicht.
Wenn in eine Variable entladen wird, sind keine Berechtigungen erforderlich (außer den normalen Berechtigungen für den Zugriff auf die Datenquelle).
Die Berechtigungen für die Ausführung einer UNLOAD-Anweisung hängen wie folgt von der Datenbankserveroption -gl ab:
Wenn -gl auf ALL gesetzt ist, brauchen Sie SELECT-Berechtigungen für die Tabellen, die in der Anweisung UNLOAD referenziert werden.
Wenn -gl auf DBA gesetzt ist, benötigen Sie DBA-Berechtigungen.
Wenn -gl auf NONE gesetzt ist, wird UNLOAD nicht zugelassen.
Weitere Hinweise finden Sie unter Serveroption -gl.
Folgendes gilt beim Schreiben einer Datei auf einem Clientcomputer:
WRITECLIENTFILE-Datenbankberechtigung ist erforderlich. Weitere Hinweise finden Sie unter WRITECLIENTFILE-Datenbankberechtigung.
Schreibberechtigungen sind für das Verzeichnis erforderlich, in das geschrieben wird.
Die Datenbankoption allow_write_client_file muss aktiviert sein. Weitere Hinweise finden Sie unter allow_write_client_file-Option [Datenbank].
Die Sicherheitsfunktion write_client_file muss aktiviert sein. Weitere Hinweise finden Sie unter Serveroption -sf.
Keine. Die Abfrage wird auf der aktuellen Isolationsstufe ausgeführt.
SQL/2003 Erweiterung des Herstellers
Im folgenden Beispiel wird der Inhalt der Tabelle Products in eine mit UTF-8 kodierte Datei productsT.dat entladen:
UNLOAD TABLE Products TO 'productsT.dat' ENCODING 'UTF-8'; |
Im folgenden Beispiel wird eine Variable @myProducts erstellt. Danach wird die Spalte Products.Name in die Variable entladen:
CREATE VARIABLE @myProducts LONG VARCHAR; UNLOAD SELECT NAME FROM Products INTO VARIABLE @myProducts; |
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |