現在のクエリ結果をファイルまたは ODBC データソースに出力します。
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 句 これはオプションのキーワードであり、既存の出力ファイルの前の内容を上書きしないで、末尾にクエリの結果を追加するために使用します。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 フォーマットでのみ使用できます。
ENCODING 句は、オペレーティングシステムの文字セットで表すことができないデータがある場合に役立ちます。この場合、ENCODING 句を使用しないと、デフォルトエンコードで表すことができない文字は出力から失われます (つまり、損失を伴う変換が発生します)。
OUTPUT 文を使用して入力ファイルを作成したときにエンコードを指定した場合は、INPUT 文でも同じ ENCODING 句を指定してください。
Interactive SQL を実行するとき、データのエクスポートに使用されるエンコードは次の順序で決定されます。
ENCODING 句で指定されたエンコード (この句が指定されている場合)。
default_isql_encoding オプションで指定されたエンコード (このオプションが設定されている場合)。
実行しているプラットフォームのデフォルトエンコード。英語版 Windows コンピューターでは、デフォルトエンコードは 1252 です。
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 句によって、出力のファイルフォーマットを指定できます。FORMAT 句を指定していない場合、output_format オプションで指定したフォーマットが使用されます。FORMAT 句を指定した場合、output_format オプションの設定は無視されます。デフォルトの出力フォーマットは TEXT です。使用できる出力フォーマットは、次のとおりです。
TEXT 出力は、ファイルの 1 行に 1 つのローが格納されたテキストフォーマットファイルです。すべての値をカンマで区切り、文字列をアポストロフィ (一重引用符) で囲みます。デリミターと引用符文字列は、DELIMITED BY と QUOTE 句を使って変更できます。ALL を QUOTE 句の中で指定する場合は、(文字列だけではなく) すべての値を引用符で囲みます。TEXT がデフォルトの出力タイプです。
他の 3 つの特別なシーケンスも使用できます。2 つの文字 \n は改行文字を表し、\ は \ を表し、シーケンス \xDD は 16 進コード DD の文字を表します。
TEXT に出力し、出力内に引用符や改行を含めない場合は、QUOTE '' ESCAPES OFF
のように、引用符やエスケープをオフにします。
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 ブロック内にエンコードされます。
HEXADECIMAL 句 HEXADECIMAL 句は、バイナリ値を TEXT フォーマットに出力する方法を指定します。使用できる値は、次のとおりです。
ON ON に設定すると、Ox プレフィクスとその後に続く一連の 16 進ペアでバイナリ値が書き込まれます。たとえば、0xabcd のようになります。
OFF OFF に設定すると、印刷不能な文字値の先頭にエスケープ文字 (円記号など) が追加され、その後に x、バイトの 16 進ペアと続きます。印刷可能な文字はそのまま出力されます。
たとえば、次のコマンドは、'one\x0Atwo\x0Athree'
を含むファイルを出力します。
SELECT 'one\ntwo\nthree' OUTPUT TO 'test.txt' HEXADECIMAL OFF; |
ASIS ASIS に設定すると、値はそのまま書き込まれます。値が制御文字を含む場合も、エスケープはされません。ASIS は、タブや改行などのフォーマット記号を含むテキストに適しています。
QUOTE 句
QUOTE 句を使用できるのは、TEXT 出力フォーマットの場合のみです。文字列値は引用符で囲みます。デフォルトは一重引用符 (') です。ALL を QUOTE 句の中に指定する場合、引用符文字列を文字列だけではなくすべての値の周囲に配置します。引用符で囲まないようにするには、空の一重引用符を指定します。たとえば、QUOTE ''
のように指定します。
USING 句 USING 句は ODBC データソースにデータをエクスポートします。DSN オプションを使用して ODBC データソース名を指定するか、または DRIVER オプションを使用して ODBC ドライバー名と接続パラメーターを指定できます。Connection-parameter は、データベース特定の接続パラメーターのオプションのリストです。
Odbc-data-source は、ユーザー名または ODBC データソース名です。たとえば、SQL Anywhere サンプルデータベースの odbc-data-source は SQL Anywhere 12 Demo です。
Odbc-driver-name は ODBC ドライバー名です。SQL Anywhere データベースの場合、odbc-driver-name は SQL Anywhere です。Ultra Light データベースの場合、odbc-driver-name は Ultra Light 12 です。
VERBOSE 句 オプションの VERBOSE キーワードを指定すると、クエリに関するエラーメッセージ、データの選択に使用された SQL 文、データ自体が出力ファイルに書き込まれます。データを含まない行には 2 つのハイフン (--) のプレフィクスが付きます。VERBOSE を省略すると (デフォルト)、ファイルにはデータのみが書き込まれます。出力フォーマットが TEXT、FIXED、または SQL の場合に、VERBOSE キーワードが有効です。
WITH COLUMN NAMES 句 WITH COLUMN NAMES 句は、テキストファイルの先頭行にカラム名を挿入します。WITH COLUMN NAMES 句を使用できるのは、TEXT フォーマットの場合のみです。
OUTPUT 文は、ファイルまたはデータベースにデータを出力します。出力するデータを取り出す文の直後に OUTPUT 文を使用します。
複数の結果セットをエクスポートするには、構文 1 を使用し、isql_show_multiple_result_sets オプションを On に設定します。Interactive SQL では、結果セットごとにファイルが作成されます。ファイルの名前は filename-x のようになります。ここで、x は 1 から始まるカウンターです。たとえば、OUTPUT TO で data.txt という名前のファイルを指定すると、data-1.txt、data-2.txt のようなファイル名が使用されます。
構文 2 を使用して複数の結果セットをエクスポートすることはできません。
出力フォーマットは、オプションの FORMAT 句を使って指定できます。デフォルトのフォーマットは TEXT です。FORMAT 句を指定しない場合、Interactive SQL output_format オプションの設定が使用されます。
OUTPUT 文は Interactive SQL コマンドであるため、複合文 (IF など) やストアドプロシージャーでは使用できません。
BINARY データまたは LONG BINARY データを含むカラムを Microsoft Excel ブックにエクスポートする場合は、データを文字列または数値に変換してください。また、データを Microsoft Excel ブックにエクスポートする場合、DSN オプションの選択時に ReadOnly パラメーターを 0 に設定するか、オフにしないと、データは読み込み専用になります。
なし
Interactive SQL の場合、[結果] タブには現在のクエリの結果が表示されます。
SQL/2008 ベンダー拡張。
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 |
同じ文を、HEXADECIMAL を OFF にして実行すると、次のようになります。
'line1\x0Aline2' |
最後に、HEXADECIMAL を ASIS に設定すると、2 行のファイルができます。
'line1 line2' |
ASIS を使用した場合に 2 行になるのは、埋め込まれた改行文字が 2 桁の 16 進表現に変換されず、プレフィクスも付かないままエクスポートされたためです。
次の例は、Customers テーブルから新しいテーブル Customers2 にデータを出力します。
SELECT * FROM Customers; OUTPUT USING 'dsn=SQL Anywhere 12 Demo' INTO "Customers2"; |
次の例は、DRIVER オプションを使用して、サンプルデータベースからデータベース mydatabase.db に Customers テーブルをコピーします。
SELECT * FROM Customers; OUTPUT USING 'DRIVER=SQL Anywhere 12;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 12;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"; |
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |