Gibt die aktuellen Abfrageergebnisse in eine Datei oder ODBC-Datenquelle aus.
OUTPUT TO filename [ APPEND ] [ BYTE ORDER MARK { ON | OFF } [ COLUMN WIDTHS ( integer, ... ) ] [ DELIMITED BY string ] [ ENCODING encoding ] [ ESCAPE CHARACTER character ] [ ESCAPES { ON | OFF } [ FORMAT output-format ] [ HEXADECIMAL { ON | OFF | ASIS } ] [ QUOTE string [ ALL ] ] [ VERBOSE ] [ WITH COLUMN NAMES ]
output-format : TEXT | FIXED | HTML | SQL | XML
encoding : string | identifier
OUTPUT USING connection-string INTO destination-table-name [ CREATE TABLE { ON | OFF } ]
connection-string : { DSN = odbc-data-source | DRIVER = odbc-driver-name [; connection-parameter = value [; ... ] ] }
APPEND-Klausel Dieses optionale Schlüsselwort wird verwendet, um die Ergebnisse der Abfrage am Ende der vorhandenen Ausgabedatei anzufügen, ohne den Inhalt der Datei zu überschreiben. Wenn die APPEND-Klausel nicht verwendet wird, überschreibt die Anweisung OUTPUT standardmäßig den Inhalt der Ausgabedatei. Das Schlüsselwort APPEND ist gültig, wenn das Ausgabeformat TEXT, FIXED oder SQL ist.
BYTE ORDER MARK-Klausel Verwenden Sie diese Klausel, um anzugeben, ob eine Byte Order Mark (BOM) an den Beginn einer Unicode-Datei gesetzt werden soll. Standardmäßig ist diese Option ON, wodurch Interactive SQL angewiesen wird, eine Byte Order Mark (BOM) an den Beginn der Datei zu schreiben. Wenn BYTE ORDER MARK OFF ist, schreibt DBISQL keine BOM.
Die BYTE ORDER MARK-Klausel ist nur relevant, wenn das Schreiben in Dateien im Textformat erfolgt. Wenn Sie versuchen, die BYTE ORDER MARK-Klausel mit anderen FORMAT-Klauseln als TEXT zu verbinden, wird ein Fehler zurückgegeben.
Die BYTE ORDER MARK-Klausel wird nur verwendet, wenn Dateien gelesen oder geschrieben werden, die mit UTF-8 oder UTF-16 (und ihren Varianten) kodiert sind. Wenn Sie versuchen, die BYTE ORDER MARK-Klausel mit anderen Kodierungen zu verbinden, wird ein Fehler zurückgegeben.
COLUMN WIDTHS-Klausel Die COLUMN WIDTHS-Klausel wird verwendet, um die Spaltenbreite für die Ausgabe im FIXED-Format anzugeben.
CREATE TABLE-Klausel Verwenden Sie die CREATE TABLE-Klausel, um anzugeben, ob die Zieltabelle erstellt werden soll, wenn sie nicht existiert. Der Standardwert ist ON.
DELIMITED BY-Klausel Die Klausel DELIMITED BY gilt nur für das Ausgabeformat TEXT. Die Trennzeichenfolge wird zwischen Spalten platziert. Der Standardwert ist das Komma.
ENCODING-Klausel Mit der ENCODING-Klausel können Sie die Kodierung angeben, mit der die Datei geschrieben werden soll. Die ENCODING-Klausel kann nur im TEXT-Format verwendet werden.
Die ENCODING-Klausel ist nützlich, wenn Sie über Daten verfügen, die im Zeichensatz des Betriebssystems nicht angezeigt werden können. Wenn Sie in einem solchen Fall die ENCODING-Klausel nicht verwenden, gehen Zeichen, die im Standardzeichensatz nicht angezeigt werden können, verloren (und eine verlustreiche Konvertierung wird durchgeführt).
Wenn die Eingabedatei mit der OUTPUT-Anweisung erstellt und eine Kodierung angegeben wurde, muss dieselbe ENCODING-Klausel in der INPUT-Anweisung angegeben werden.
Wenn Sie Interactive SQL ausführen, wird die beim Exportieren der Daten verwendete Kodierung in der folgenden Reihenfolge ermittelt:
Die durch die ENCODING-Klausel angegebene Kodierung (sofern diese Klausel angegeben ist).
Die durch die Option default_isql_encoding angegebene Kodierung (sofern diese Option festgelegt wurde).
Die Standardkodierung für die Plattform, die Sie verwenden. Auf Computern mit englischem Windows ist die Standardkodierung 1252.
ESCAPE CHARACTER-Klausel Das Standard-Escapezeichen für als hexadezimale Codes und Symbole gespeicherte Zeichen ist ein Backslash (\). Beispielsweise ist \x0A das Zeilenvorschubzeichen.
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 '!' |
Die Zeilenendmarke kann als "\n" angegeben werden. Andere Zeichen können mit hexadezimalen ASCII-Codes wie etwa \x09 für das Tabulatorzeichen angegeben werden. 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 wird \q als Backslash mit dem Buchstaben q intepretiert.
ESCAPES-Klausel Wenn ESCAPES aktiviert ist (Standardwert), werden die Zeichen, die auf das Backslashzeichen folgen, vom Datenbankserver als Sonderzeichen erkannt und interpretiert. Wenn ESCAPES deaktiviert ist, werden die Zeichen genauso geschrieben, wie sie in den Quelldaten erscheinen.
FORMAT-Klausel Mit der FORMAT-Klausel können Sie das Dateiformat für die Ausgabe angeben. Wenn Sie die FORMAT-Klausel nicht angeben, wird das von der Option output_format festgelegte Format verwendet. Wenn Sie die FORMAT-Klausel festlegen, wird die Einstellung der output_format-Option ignoriert. Das Standard-Ausgabeformat ist TEXT. Folgende Ausgabeformate sind zulässig:
TEXT Die Ausgabe ist eine Datei im TEXT-Format mit einer Tabellenzeile pro Ausgabezeile in der Datei. Alle Werte sind durch Kommas getrennt, und Zeichenfolgen werden in Apostrophe eingeschlossen. Die Trennzeichen und Apostrophe oder Anführungszeichen können mit den Klauseln DELIMITED BY und QUOTE geändert werden. Wenn ALL in der QUOTE-Klausel angegeben wird, werden alle Werte (nicht nur Zeichenfolgen) in Apostrophe oder Anführungszeichen gesetzt. TEXT ist der Standard-Ausgabedatentyp.
Drei weitere spezielle Sequenzen werden ebenfalls verwendet. Die beiden Zeichen \n stellen eine Zeilenendmarke dar, \\ stellt einen einzelnen \ und die Sequenz \xDD stellt das Zeichen mit dem Hexadezimalcode DD dar.
Wenn Sie in TEXT ausgeben möchten, aber Anführungs- oder Zeilenumbruchzeichen nicht in Ihrer Ausgabe enthalten sein sollen,
deaktivieren Sie Anführungszeichen und Escapes wie folgt: QUOTE '' ESCAPES OFF
.
FIXED Die Ausgabe ist festes Format, wobei jede Spalte eine feste Breite hat. Die Breite der einzelnen Spalten kann mit der COLUMN WIDTHS-Klausel angegeben werden. In diesem Format werden keine Spaltentitel ausgegeben.
Wenn die COLUMN WIDTHS-Klausel weggelassen wird, errechnet das System die Breite für jede einzelne Spalte aus dem Datentyp für die Spalte und ist breit genug für Werte dieses Datentyps. Eine Ausnahme bilden die Daten LONG VARCHAR und LONG BINARY, deren Standardwert 32 kB beträgt.
HTML Die Ausgabe ist im Hyper Text Markup Language-Format.
SQL Die Ausgabe ist eine Interactive SQL INPUT-Anweisung, die erforderlich ist, um die Daten in der Tabelle neu zu erstellen, in Form einer .sql-Datei.
XML Die Ausgabe ist eine XML-Datei, kodiert in UTF-8 mit einer eingebetteten DTD. Binärwerte sind in CDATA-Blöcken kodiert, wobei die Binärdaten in Form von Zeichenfolgen mit jeweils zwei hexadezimalen Zeichen dargestellt werden.
HEXADECIMAL-Klausel Die HEXADECIMAL-Klausel gibt an, wie Binärwerte für das TEXT-Format ausgegeben werden. Zulässige Werte sind:
ON Wenn auf ON eingestellt, werden Binärwerte mit einem Ox-Präfix, gefolgt durch eine Serie von hexadezimalen Paaren, geschrieben: z.B. 0xabcd.
OFF Bei der Einstellung OFF wird nicht druckbaren Zeichenwerten das Escapezeichen vorangestellt, z.B. der Backslash, gefolgt von x und dem hexadezimalen Paar für das Byte. Druckbare Zeichen werden normal ausgegeben.
Mit dem folgenden Befehl geben Sie beispielsweise eine Datei aus, die 'one\x0Atwo\x0Athree'
enthält:
SELECT 'one\ntwo\nthree' OUTPUT TO 'test.txt' HEXADECIMAL OFF; |
ASIS Wenn auf ASIS eingestellt, werden Werte in ihrer Istform geschrieben, ohne Escapezeichen, auch wenn die Zeichen Steuerzeichen enthalten. Die Option ASIS ist für Text von Nutzen, der Formatierungsinformationen wie Tabulatoren oder Zeilenumbrüche enthält.
QUOTE-Klausel
Die Klausel QUOTE gilt nur für das Ausgabeformat TEXT. Die Zeichenfolge für die Anführungszeichen wird um die Zeichenfolgenwerte
herum platziert. Der Standardwert ist ein Apostroph ('). Wenn ALL in der QUOTE-Klausel angegeben ist, werden alle Werte und
nicht nur die Zeichenfolgen von Apostrophen oder Anführungszeichen umschlossen. Um Anführungszeichen zu unterdrücken, müssen
sie leere Apostrophe eingeben. Beispiel: QUOTE ''
.
USING-Klausel Die USING-Klausel exportiert Daten in eine ODBC-Datenquelle. Sie können entweder den ODBC-Datenquellennamen mit der DSN-Option oder den ODBC-Treibernamen und den Verbindungsparameter mit der DRIVER-Option angeben. Connection-parameter: Eine optionale Liste von datenbankspezifischen Verbindungsparametern.
Odbc-data-source ist der Name eines Benutzers oder der ODBC-Datenquellenname. Beispiel: Odbc-data-source ist für die SQL Anywhere-Beispieldatenbank "SQL Anywhere 12 Demo".
Odbc-driver-name ist der ODBC-Treibername. Für eine SQL Anywhere-Datenbank ist der Odbc-driver-name SQL Anywhere , für eine UltraLite-Datenbank ist der Odbc-driver-name UltraLite 12.
VERBOSE-Klausel Wenn das optionale VERBOSE-Schlüsselwort einbezogen ist, werden Fehlermeldungen über die Abfrage, die SQL-Anweisung, die zur Auswahl der Daten verwendet wurde, und die Daten in die Ausgabedatei geschrieben. Zeilen, die keine Daten enthalten, haben zwei Bindestriche als Präfix. Wenn VERBOSE ausgelassen wird (Standardwert), werden nur die Daten in die Datei geschrieben. Das Schlüsselwort VERBOSE ist gültig, wenn das Ausgabeformat TEXT, FIXED oder SQL ist.
WITH COLUMN NAMES-Klausel Die WITH COLUMN NAMES-Klausel fügt die Spaltennamen in der ersten Zeile der Textdatei ein. Die WITH COLUMN NAMES-Klausel gilt nur für das TEXT-Format.
Die OUTPUT-Anweisung gibt Daten in eine Datei oder eine Datenbank aus. Die OUTPUT-Anweisung wird direkt nach einer Anweisung verwendet, die die auszugebenden Daten abruft.
Um mehrere Ergebnismengen zu exportieren, verwenden Sie Syntax 1 und setzen die Option isql_show_multiple_result_sets auf ON. Interactive SQL erstellt eine Datei für jede Ergebnismenge. Die Dateien erhalten den Namen Dateiname-x, wobei x ein mit 1 beginnender Zähler ist. Zum Beispiel werden durch die Angabe von OUTPUT TO für eine Datei mit dem Namen data.txt Dateien mit dem Namen data-1.txt, data-2.txt usw. ausgegeben.
Sie können Syntax 2 nicht zum Exportieren mehrerer Ergebnismengen verwenden.
Das Ausgabeformat kann mit der optionalen FORMAT-Klausel angegeben werden. Das Standardformat ist TEXT. Wenn keine FORMAT-Klausel angegeben ist, wird die Interactive SQL-Optionseinstellung output_format verwendet.
Da die OUTPUT-Anweisung ein Interactive SQL-Befehl ist, kann sie nicht in zusammengesetzten Anweisungen (wie IF) oder in gespeicherten Prozeduren verwendet werden.
Beim Exportieren von Spalten mit BINARY- oder LONG BINARY-Daten in eine Microsoft Excel-Arbeitsmappe müssen Sie die Daten in eine Zeichenfolge oder eine Zahl konvertieren. Außerdem gilt: Wenn Daten in eine Microsoft Excel Arbeitsmappe exportiert werden, sind die Daten schreibgeschützt, es sei denn, der ReadOnly-Parameter wird beim Auswählen der DSN-Option auf Null gesetzt oder deaktiviert.
Keine.
In Interactive SQL enthält die Registerkarte Ergebnisse die Ergebnisse der aktuellen Abfrage.
SQL/2008 Erweiterung des Herstellers.
Inhalt der Employees-Tabelle in eine Textdatei schreiben:
SELECT * FROM Employees; OUTPUT TO 'Employees.txt' FORMAT TEXT; |
Inhalte der Tabelle 'Employees' ans Ende einer bestehenden Datei schreiben und Meldungen über die Abfrage in diese Datei einfügen:
SELECT * FROM Employees; OUTPUT TO 'Employees.txt' APPEND VERBOSE; |
Nehmen wir an, dass Sie einen Wert exportieren müssen, der ein eingebettetes Zeilenvorschubzeichen enthält. Ein Zeilenvorschubzeichen hat den nummerichen Wert 10, den Sie als die Zeichenfolge '\x0a' in einer SQL-Anweisung angeben können. Führen Sie beispielsweise die folgende Anweisung mit der Option HEXADECIMAL auf ON aus:
SELECT CAST ('line1\x0aline2' AS VARBINARY); OUTPUT TO 'file.txt' HEXADECIMAL ON; |
Damit wird eine Datei ausgegeben, die den folgenden Text enthält:
0x6c696e65310a6c696e6532 |
Wenn Sie jedoch dieselbe Anweisung ausführen und die Option HEXADECIMAL auf OFF setzen, erhalten Sie Folgendes:
'line1\x0Aline2' |
Schließlich setzen Sie HEXADECIMAL auf ASIS und erhalten eine Datei mit den folgenden zwei Zeilen:
'line1 line2' |
Wenn Sie ASIS verwenden, werden zwei Zeilen ausgegeben, da das eingebettete Zeilenvorschubzeichen ohne Umwandlung in eine zweistellige hexadezimale Entsprechung und ohne ein vorangestelltes Escapezeichen exportiert wurde.
Beim folgenden Beispiel werden die Daten aus der Customers-Tabelle in eine neue Tabelle, Customers2, ausgegeben:
SELECT * FROM Customers; OUTPUT USING 'dsn=SQL Anywhere 12 Demo' INTO "Customers2"; |
Im folgenden Beispiel wird die Customers-Tabelle aus der Beispieldatenbank in eine Datenbank namens mydatabase.db kopiert, wobei die DRIVER-Option verwendet wird.
SELECT * FROM Customers; OUTPUT USING 'DRIVER=SQL Anywhere 12;uid=dba;pwd=sql;dbf=c:\test\mydatabase.db' INTO "Customers"; |
Im folgenden Beispiel wird die Customers-Tabelle aus der SQL Anywhere-Beispieldatenbank in eine Tabelle namens Customers in einer fiktiven UltraLite-Datenbank namens myULDatabase.db kopiert, wobei die DRIVER-Option verwendet wird.
SELECT * FROM Customers; OUTPUT USING 'DRIVER=UltraLite 12;dbf=c:\test\myULDatabase.udb' INTO "Customers"; |
Im folgenden Beispiel wird die Customers-Tabelle in eine fiktive MySQL-Datenbank mydatabase mit der DRIVER-Option exportiert.
SELECT * FROM Customers; OUTPUT USING 'DRIVER=MySQL ODBC 5.1 Driver;DATABASE=mydatabase;SERVER=mySQLHost;UID=me;PWD=secret' INTO "Customers"; |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |