Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL リファレンス » SQL の使用 » SQL 文 » SQL 文 (E ~ O)

 

OUTPUT 文 [Interactive SQL]

この文は、現在のクエリ結果をファイルに出力するために使用します。

構文 1 - ファイルへの出力
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 ]
output-format :
TEXT 
| FIXED 
| HTML
| SQL 
| XML
encoding : string または identifier
構文 2 - ODBC データ・ソースへの出力
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 句   これはオプションのキーワードであり、既存の出力ファイルの前の内容を上書きしないで、末尾にクエリの結果を追加するために使用します。APPEND 句を使用しない場合、OUTPUT 文はデフォルトで出力ファイルの内容を上書きします。出力フォーマットが TEXT、FIXED、または SQL の場合に、APPEND キーワードが有効です。

  • BYTE ORDER MARK 句   この句は、Unicode ファイルの最初にバイト順マーク (BOM) を追加するかどうかを指定するときに使用します。デフォルトでは、このオプションは ON です。この場合、ファイルの最初でバイト順マーク (BOM) を書き込むように Interactive SQL に指示します。BYTE ORDER MARK が OFF の場合、DBISQL は BOM を書き込みません。

    BYTE ORDER MARK 句は、TEXT フォーマットされたファイルに書き込む場合にのみ関係します。TEXT 以外の FORMAT 句とともに BYTE ORDER MARK 句を使用すると、エラーが返されます。

    BYTE ORDER MARK 句は、UTF-8 か UTF-16 でエンコードされたファイルの読み込みまたは書き込みをするときにのみ使用されます。その他のエンコードで BYTE ORDER MARK 句を使用しようとすると、エラーが返されます。

  • COLUMN WIDTHS 句   COLUMN WIDTHS 句を使用して、FIXED フォーマット出力のカラム幅を指定します。

  • CREATE TABLE 句   CREATE TABLE 句を使用して、インポート先テーブルが存在しない場合に作成するかどうかを指定します。デフォルトは ON です。

  • DELIMITED BY 句   DELIMITED BY 句を使用できるのは、TEXT 出力フォーマットの場合のみです。カラムはデリミタ文字列で区切られます。デフォルトはカンマです。

  • ENCODING 句   ENCODING 句では、ファイルの書き込みに使用されるエンコードを指定できます。ENCODING 句は、TEXT フォーマットでのみ使用できます。

    SQL Anywhere でサポートされるエンコードのリストを取得する方法については、サポートされている文字セットを参照してください。

    Interactive SQL を使用するときに ENCODING 句を指定しなかった場合、ファイルの書き込みに使用されるエンコードは次の順序で決定されます。

    • default_isql_encoding オプションで指定されたエンコード (このオプションが設定されている場合)

    • Interactive SQL が動作しているコンピュータ上のオペレーティング・システムの文字セットのデフォルトのエンコード

    ENCODING 句は、オペレーティング・システムの文字セットで表すことができないデータがある場合に役立ちます。この場合、ENCODING 句を使用しないと、デフォルト・エンコードで表すことができない文字は出力から失われます (つまり、損失を伴う変換が発生します)。

    OUTPUT 文でエンコードを指定する場合は、INPUT 文を使用してデータを挿入する場合にも同じ ENCODING 句を指定してください。

    Interactive SQL とエンコードの詳細については、default_isql_encoding オプション [Interactive SQL]を参照してください。

  • ESCAPE CHARACTER 句   16 進コードと記号として格納されている文字に使用するデフォルトのエスケープ文字は円記号 (\) です。たとえば、\x0A は改行文字です。

    エスケープ文字は、ESCAPE CHARACTER 句を使って変更することができます。たとえば、感嘆符 (!) をエスケープ文字として使用するには、次のように指定します。

    ... ESCAPE CHARACTER '!'

    改行文字は '\n' と指定できます。他の文字は、タブ文字は \x09 などのように、16 進 ASCII コードを使用して指定できます。2 つの円記号 (\) は 1 つの円記号として解釈されます。円記号 (\) の後に n、x、X、\ 以外の文字がある場合、それらは別々の文字と解釈されます。たとえば、\q は円記号と q と解釈されます。

  • ESCAPES 句   ESCAPES を ON (デフォルト) にすると、データベース・サーバによって円記号に続く文字が認識され、特殊文字として解釈されます。ESCAPES を OFF にすると、ソース・データに記載されているとおりに文字が書き込まれます。

  • FORMAT 句   FORMAT 句によって、出力のファイル・フォーマットを指定できます。使用できる出力フォーマットは、次のとおりです。

    • TEXT   出力は、ファイルの 1 行に 1 つのローが格納された TEXT フォーマット・ファイルです。すべての値をカンマで区切り、文字列をアポストロフィ (一重引用符) で囲みます。デリミタと引用符文字列は、DELIMITED BY と QUOTE 句を使って変更できます。ALL を QUOTE 句の中で指定する場合は、(文字列だけではなく) すべての値を引用符で囲みます。TEXT がデフォルトの出力タイプです。

      他の 3 つの特別なシーケンスも使用できます。2 つの文字 \n は改行文字を表し、\ は \ を表し、シーケンス \xDD は 16 進コード DD の文字を表します。

    • FIXED   この出力は、それぞれのカラムが固定幅を持つ固定フォーマットです。各カラムの幅は COLUMN WIDTHS 句を使用して指定できます。カラムの見出しはこのフォーマット内では出力されません。

      COLUMN WIDTHS 句を省略すると、各カラムの幅はデータ型から計算され、そのデータ型のどのような値でも十分に保持できる大きさになります。例外は、32 KB がデフォルトの LONG VARCHAR と LONG BINARY データです。

    • HTML   この出力は HTML (Hyper Text Markup Language) フォーマットです。

    • SQL   出力は、(テーブル内の情報を再作成するのに必要な) Interactive SQL の INPUT 文で、.sql ファイルに格納されます。

    • XML   この出力は、UTF-8 でエンコードされ、DTD が埋め込まれた XML ファイルです。バイナリ値は、2 桁の 16 進数文字列として表されるバイナリ・データとして CDATA ブロック内にエンコードされます。

      注意

      INPUT 文は、XML をファイル・フォーマットとして受け入れません。

  • HEXADECIMAL 句   HEXADECIMAL 句は、バイナリ値を TEXT フォーマットに出力する方法を指定します。使用できる値は、次のとおりです。

    • ON   ON に設定すると、Ox プレフィクスとその後に続く一連の 16 進ペアでバイナリ値が書き込まれます。たとえば、0xabcd のようになります。

    • OFF   OFF に設定すると、バイナリ値は一度に 1 バイト書き込まれます。円記号などのエスケープ文字が各バイトの先頭に追加され、その後に x、バイトの 16 進ペアと続きます。たとえば、\xab\xcd のようになります。

    • ASIS   ASIS に設定すると、値はそのまま書き込まれます。値が制御文字を含む場合も、エスケープはされません。ASIS は、タブや改行などのフォーマット記号を含むテキストに適しています。

  • QUOTE 句   QUOTE 句を使用できるのは、TEXT 出力フォーマットの場合のみです。文字列値は引用符で囲みます。デフォルトは一重引用符 (') です。ALL を QUOTE 句の中に指定する場合、引用符文字列を文字列だけではなくすべての値の周囲に配置します。

  • USING 句   USING 句は ODBC データ・ソースにデータをエクスポートします。DSN オプションを使用して ODBC データ・ソース名を指定するか、または DRIVER オプションを使用して ODBC ドライバ名と接続パラメータを指定できます。Connection-parameter は、データベース特定の接続パラメータのオプションのリストです。

    Odbc-data-source は、ユーザ名または ODBC データ・ソース名です。たとえば、SQL Anywhere デモ・データベースの odbc-data-source は SQL Anywhere 11 Demo です。

    Odbc-driver-name は ODBC ドライバ名です。SQL Anywhere 11 データベースの場合、odbc-driver-name は SQL Anywhere 11 です。Ultra Light データベースの場合、odbc-driver-name は Ultra Light 11 です。

  • VERBOSE 句   オプションの VERBOSE キーワードを指定すると、クエリに関するエラー・メッセージ、データの選択に使用された SQL 文、データ自体が出力ファイルに書き込まれます。データを含まない行には 2 つのハイフン (--) のプレフィクスが付きます。VERBOSE を省略すると (デフォルト)、ファイルにはデータのみが書き込まれます。出力フォーマットが TEXT、FIXED、または SQL の場合に、VERBOSE キーワードが有効です。

備考

OUTPUT 文は、ファイルまたはデータベースにデータを出力します。出力するデータを取り出す文の直後に OUTPUT 文を使用します。前の文が複数の結果セットを生成すると、エラーが返されます。

出力フォーマットは、オプションの FORMAT 句を使って指定できます。FORMAT 句を指定しない場合、Interactive SQL output_format オプションの設定が使用されます (output_format オプション [Interactive SQL]を参照してください)。

INPUT 文は Interactive SQL コマンドであるため、複合文 (IF など) やストアド・プロシージャでは使用できません。プロシージャ、トリガ、イベント、バッチで使用できる文を参照してください。

パーミッション

なし

関連する動作

Interactive SQL の場合、[結果] タブには現在のクエリの結果が表示されます。

参照
標準と互換性
  • SQL/2003   ベンダ拡張。

Employees テーブルの内容をテキスト・ファイルに出力します。

SELECT *
FROM Employees;
OUTPUT TO 'Employees.txt'
FORMAT TEXT;

Employees テーブルの内容を既存のテキスト・ファイルの最後に追加し、クエリに関するメッセージも同じファイルに追加します。

SELECT *
FROM Employees;
OUTPUT TO 'Employees.txt' 
APPEND VERBOSE;

改行文字が埋め込まれた値をエクスポートする必要があるとします。改行文字の数値は 10 です。SQL 文ではこれを文字列 '\x0a' として表すことができます。たとえば、HEXADECIMAL を ON に設定して次の文を実行します。

SELECT CAST ('line1\x0aline2' AS VARBINARY);
OUTPUT TO 'file.txt' HEXADECIMAL ON;

次のテキストを含む 1 行のファイルができます。

0x6c696e65310a6c696e6532

同じ文を、HEXADEMICAL を OFF にして実行すると、次のようになります。

'line1\x0Aline2'

最後に、HEXADECIMAL を ASIS に設定すると、2 行のファイルができます。

'line1
line2'

ASIS を使用した場合に 2 行になるのは、埋め込まれた改行文字が 2 桁の 16 進表現に変換されず、プレフィクスも付かないままエクスポートされたためです。

次の例は、Customers テーブルから新しいテーブル Customers2 にデータを出力します。

SELECT * FROM Customers;
OUTPUT USING 'dsn=SQL Anywhere 11 Demo'
INTO "Customers2";

次の例は、DRIVER オプションを使用して、デモ・データベースから架空のデータベース mydatabase.db に Customers テーブルをコピーします。

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

次の例は、DRIVER オプションを使用して、SQL Anywhere デモ・データベースから架空の Ultra Light データベース myULDatabase.db の Customers テーブルに Customers テーブルをコピーします。

SELECT * FROM Customers;
OUTPUT USING "DRIVER=Ultralite 11;dbf=c:\test\myULDatabase.udb"
INTO "Customers";

次の例は、DRIVER オプションを使用して、架空の MySQL データベース mydatabaseに Customers テーブルをコピーします。

SELECT * FROM Customers;
OUTPUT USING "DRIVER=MySQL ODBC 5.1 Driver;DATABASE=mydatabase;SERVER=mySQLHost;UID=me;PWD=secret"
INTO "Customers";