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)

 

OUTPUT-Anweisung [Interactive SQL]

Mit dieser Anweisung geben Sie die aktuellen Abfrageergebnisse in eine Datei aus.

Syntax 1 - Schreibt das Protokoll in eine Datei
OUTPUT TO Dateiname
[ APPEND ]
[ BYTE ORDER MARK { ON | OFF }
[ COLUMN WIDTHS ( Ganzzahl, ... ) ]
[ DELIMITED BY Zeichenfolge ]
[ ENCODING Kodierung ]
[ ESCAPE CHARACTER Zeichen ]
[ ESCAPES { ON | OFF }
[ FORMAT Ausgabeformat ]
[ HEXADECIMAL { ON | OFF | ASIS } ]
[ QUOTE Zeichenfolge [ ALL ] ]
[ VERBOSE ]
Ausgabeformat :
TEXT 
| FIXED 
| HTML
| SQL 
| XML
Kodierung : Zeichenfolge oder Bezeichner
Syntax 2 - Ausgabe in eine ODBC- Datenquelle
OUTPUT  
USING Verbindungszeichenfolge
INTO Zieltabellenname
[ CREATE TABLE { ON | OFF } ]
Verbindungszeichenfolge :  
{ DSN = ODBC-Datenquelle
| DRIVER = ODBC-Treibername [; Verbindungsparameter = Wert [; ... ] ] }
Parameter
  • 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 Begrenzungszeichenfolge 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.

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

    Wenn in Interactive SQL die ENCODING-Klausel nicht angegeben ist, wird die Kodierung, die für das Schreiben der Datei verwendet wird, in der folgenden Reihenfolge ermittelt:

    • Anhand der Kodierung, die mit der Option default_isql_encoding angegeben ist (falls diese Option festgelegt wurde).

    • Anhand der Standardkodierung des Zeichensatzes des Betriebssystems auf dem Computer, auf dem Interactive SQL läuft.

    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 in der OUTPUT-Anweisung eine Kodierung angegeben ist, muss dieselbe ENCODING-Klausel angegeben werden, wenn Daten mit der INPUT-Anweisung eingefügt werden.

    Weitere Hinweise zu Interactive SQL und Kodierungen finden Sie unter default_isql_encoding-Option [Interactive SQL].

  • 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. 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.

    • 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 KByte 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.

      Hinweis

      Die INPUT-Anweisung akzeptiert XML nicht als Dateiformat.

  • 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   Wenn auf OFF eingestellt, werden Binärwerte Byte für Byte geschrieben. Vor jedem Byte steht das Escapezeichen, etwa der Backslash, gefolgt von x und dem hexadezimalen Paar für das Byte: z.B. \xab\xcd.

    • 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.

  • 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. Verbindungsparameter: Eine optionale Liste von datenbankspezifischen Verbindungsparametern.

    ODBC-Datenquelle ist der Name eines Benutzers oder der ODBC-Datenquellenname. Beispiel: ODBC-Datenquelle für die SQL Anywhere-Demo-Datenbank ist SQL Anywhere 11 Demo.

    ODBC-Treibername ist der ODBC-Treibername. Für eine SQL Anywhere 11-Datenbank ist der ODBC-Treibername SQL Anywhere 11, für eine UltraLite-Datenbank ist der ODBC-Treibername UltraLite 11.

  • 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.

Bemerkungen

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. Wenn die vorhergehende Anweisung mehr als eine Ergebnismenge ergibt, wird ein Fehler gemeldet.

Das Ausgabeformat kann mit der optionalen FORMAT-Klausel angegeben werden. Wenn keine FORMAT-Klausel angegeben ist, wird die Optionseinstellung output_format von Interactive SQL verwendet (siehe output_format-Option [Interactive SQL]).

Da die OUTPUT-Anweisung ein Interactive SQL-Befehl ist, kann sie nicht in zusammengesetzten Anweisungen (wie IF) oder in gespeicherten Prozeduren verwendet werden. Weitere Hinweise finden Sie unter Zulässige Anweisungen in Prozeduren, Triggern, Ereignissen und Batches.

Berechtigungen

Keine.

Nebenwirkungen

In Interactive SQL enthält das Register "Ergebnisse" die Ergebnisse der aktuellen Abfrage.

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

Beispiele

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

Als Gegenbeispiel führen Sie die folgende Anweisung mit der Option HEXADECIMAL auf OFF aus und erhalten folgende Zeile:

'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 11 Demo'
INTO "Customers2";

Im nachstehenden Beispiel wird die Customers-Tabelle aus der Demo-Datenbank in eine fiktive Datenbank mydatabase.db mit der DRIVER-Option exportiert.

SELECT * FROM Customers;
OUTPUT USING "DRIVER=SQL Anywhere 11;uid=dba;pwd=sql;dbf=c:\test\mydatabase.db"
INTO "Customers";

Im folgenden Beispiel wird die Customers-Tabelle aus der SQL Anywhere-Demodatenbank in eine Tabelle namens Customers in einer fiktiven UltraLite-Datenbank myULDatabase.db mit der DRIVER-Option exportiert.

SELECT * FROM Customers;
OUTPUT USING "DRIVER=Ultralite 11;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";