Entlädt Daten aus einer Datenquelle in eine Datei.
UNLOAD data-source { TO filename | INTO FILE filename | INTO CLIENT FILE client-filename | INTO VARIABLE variable-name } [ unload-option ... ]
data-source [ FROM ] [ TABLE ] [ owner.]table-name | [ FROM ] [ MATERIALIZED VIEW ] [ owner.]materialized-view-name | select-statement
filename : string | variable
client-filename : string | variable
unload-option : APPEND { ON | OFF } | BYTE ORDER MARK { ON | OFF } | { COMPRESSED | NOT COMPRESSED } | COLUMN DELIMITED BY string | DELIMITED BY string | ENCODING encoding | { ENCRYPTED KEY 'key' [ ALGORITHM 'algorithm' ] | NOT ENCRYPTED } | ESCAPE CHARACTER character | ESCAPES { ON | OFF } | FORMAT { TEXT | BCP } | HEXADECIMAL { ON | OFF } | ORDER { ON | OFF } | QUOTE string | QUOTES { ON | OFF } | ROW DELIMITED BY string
encoding : string
TO-Klausel Der Name der Datei, in die die Daten entladen werden. Der Pfad von filename 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.
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 Bytereihenfolge-Markierung (BOM) geschrieben werden soll. Standardmäßig ist diese Option ON, wenn das Ziel des Entladevorgangs eine lokale oder Clientdatei ist. Wenn die BYTE ORDER MARK-Option ON ist und ENCODING UTF-8 oder UTF-16, wird eine BOM geschrieben. 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).
COLUMN DELIMITED BY- und DELIMITED BY-Klausel Die zwischen Spalten verwendete Zeichenfolge. Das Standardtrennzeichen für Spalten ist ein Komma. Sie können ein alternatives Spaltentrennzeichen angeben, indem Sie eine Zeichenfolge mit einer Länge von bis zu 255 Byte bereitstellen.
ENCODING-Klausel Alle Datenbankdaten werden von der Datenbank-Zeichenkodierung in den angegebenen CHAR- oder NCHAR-Zeichensatz konvertiert. Wenn ENCODING nicht angegeben ist, wird der CHAR-Zeichensatz der Datenbank verwendet.
Wenn während eines Entladevorgangs ein Konvertierungsfehler auftritt, wird er entsprechend der Einstellung der on_charset_conversion_failure-Option gemeldet.
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 MARK-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.
Sie können die Daten nicht verschlüsseln, wenn sie angehängt werden sollen (APPEND ON).
ESCAPES-Klausel Wenn ESCAPES aktiviert ist (Standard), schreibt der Datenbankserver Escape-Sequenzen. Zeilenendmarken können als \n geschrieben 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 geschrieben. Ein Backslash gefolgt von einem beliebigen Zeichen außer n, x, X oder \ wird als zwei separate Zeichen geschrieben. Zum Beispiel werden mit \q ein Backslash und der Buchstabe q eingefügt. Es wird empfohlen, dass die Zeichenfolge, die Sie für das Escape-Zeichen angeben, nicht länger als ein Mehrbyte-Zeichen ist.
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, werden Daten einschließlich BLOBs als BCP-Eingabedateien zur Verwendung mit Adaptive Server Enterprise exportiert. Das Standardformat ist TEXT.
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.
ESCAPE CHARACTER-Klausel Verwenden Sie diese Klausel, um das Escape-Zeichen anzugeben, das in den Daten verwendet wird. Das standardmäßige Escape-Zeichen für Zeichen, die als hexadezimale Codes und Symbole geschrieben werden, ist ein Backslash (\), sodass \x0A beispielsweise der Zeilenendmarke entspricht. Mit der ESCAPE CHARACTER-Klausel kann das geändert werden. Wenn Sie beispielsweise das Ausrufezeichen als Escape-Zeichen verwenden möchten, geben Sie Folgendes ein:
ESCAPE CHARACTER '!' |
Es wird empfohlen, dass die Zeichenfolge, die Sie für das Escape-Zeichen angeben, nicht länger als ein Mehrbyte-Zeichen ist.
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-statemen 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. string wird vor und nach den Zeichenfolgenwerten gesetzt. Der Standardwert ist ein Apostroph.
QUOTES-Klausel Wenn QUOTES aktiviert ist (Standard), wird das Hervorhebungszeichen (standardmäßig ein Apostroph) vor und nach allen exportierten Zeichenfolgen gesetzt.
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 '###' ...
. Wenn Sie Werte angeben wollen, die durch Tabstops getrennt werden, könnten Sie z.B. die hexadezimale Escapesequenz für das
Tabulatorzeichen (9), ... ROW DELIMITED BY '\x09' ...
, verwenden. Wenn Ihre Trennzeichenfolge ein \n enthält, entspricht es entweder \r\n oder \n.
Die UNLOAD select-statement-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 INTO FILE oder INTO CLIENT FILE angegeben wurde), müssen Berechtigungen auf der Ebene des Betriebssystems haben, in die angegebene Datei zu schreiben.
Beim Entladen von Tabellenspalten mit binären Datentypen schreibt UNLOAD TABLE hexadezimale Zeichenfolgen in der Form von \xnnnn, wobei n eine hexadezimale Ziffer 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.
Beim Entladen in eine Variable (INTO VARIABLE) wird die Ausgabe wie folgt in einen Zeichensatz umgewandelt:
CHAR Ausgabe in die Variable im CHAR-Zeichensatz. Die ENCODING-Klausel muss dem CHAR-Zeichensatz entsprechen.
NCHAR Ausgabe in die Variable im NCHAR-Zeichensatz. Die ENCODING-Klausel muss dem NCHAR-Zeichensatz entsprechen.
BINARY Ausgabe in die Variable im BINARY-Zeichensatz. Die ENCODING-Klausel muss dem BINARY-Zeichensatz entsprechen. Andernfalls wird der CHAR-Zeichensatz verwendet.
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.
Während des Ausführens dieser Anweisung können Sie Meldungen zum Verarbeitungsfortschritt anfordern.
Sie können auch mithilfe der Verbindungseigenschaft "Progress" feststellen, wie viel von der Anweisung ausgeführt wurde.
Um die maximale Gesamtstellenzahl von Datumswerten beizubehalten, setzen Sie date_format auf YYYY-MM-DD.
Um die maximale Gesamtstellenzahl von TIMESTAMP-Werten beizubehalten, setzen Sie timestamp_format auf YYYY-MM-DD HH:NN:SS.SSSSSS.
Um die maximale Gesamtstellenzahl von TIMESTAMP WITH TIMEZONE-Werten beizubehalten, setzen Sie timestamp_with_time_zone_format auf YYYY-MM-DD HH:NN:SS.SSSSSS+HH:NN.
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.
Folgendes gilt beim Schreiben einer Datei auf einem Clientcomputer:
WRITECLIENTFILE-Datenbankberechtigung ist erforderlich.
Schreibberechtigungen sind für das Verzeichnis erforderlich, in das geschrieben wird.
Die Datenbankoption allow_write_client_file muss aktiviert sein.
Die Sicherheitsfunktion write_client_file muss aktiviert sein.
Keine. Die Abfrage wird auf der aktuellen Isolationsstufe ausgeführt.
SQL/2008 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.
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |