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 文 (P ~ Z)

 

UNLOAD 文

この文は、データ・ソースからファイルにデータをアンロードする場合に使用します。

構文
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 }
| { 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 句   データのアンロード先ファイルの名前。filename パスは、データベース・サーバの起動ディレクトリへの相対パスです。このファイルが存在しない場合は、作成されます。ファイルがすでに存在する場合は、APPEND ON が指定されていないかぎり、そのファイルが上書きされます。

  • INTO FILE 句   セマンティック上は TO filename と同じです。

  • INTO CLIENT FILE 句   データのアンロード先となるクライアント・コンピュータ上のファイル。このファイルが存在しない場合は作成されます。ファイルがすでに存在する場合は、APPEND ON が指定されていないかぎり、そのファイルが上書きされます。パスは、クライアント・コンピュータ上で、クライアント・アプリケーションの現在の作業ディレクトリとの相対パスとして解決されます。

    SQL Remote を使用したクライアント・コンピュータへのデータのアンロードについては、PASSTHROUGH 文 [SQL Remote]を参照してください。

  • INTO VARIABLE 句   データのアンロード先変数。変数がすでに存在し、CHAR、NCHAR、または BINARY 型である必要があります。APPEND オプションを指定すると、アンロードされたデータが変数の現在の内容に連結されます。

  • APPEND 句   APPEND を ON にすると、アンロードされたデータは、指定されたファイルの最後に追加されます。APPEND を OFF にすると、指定されたファイルの内容がアンロードされたデータに置換されます。APPEND はデフォルトでは OFF になっています。COMPRESSED または ENCRYPTED 句を指定したときは、この句を指定できません。また、追加されるファイルが圧縮または暗号化されているときは使用できません。

  • BYTE ORDER MARK 句   この句は、エンコード内にバイト順マーク (BOM) があるかどうかを制御するときに指定します。アンロードの送信先がローカル・ファイルまたはクライアント・ファイルの場合、このオプションはデフォルトで ON です。BYTE ORDER MARK オプションが ON の場合、UTF-8 のデータと UTF-16 のデータには BOM が含まれています。BYTE ORDER MARK が OFF の場合、BOM はアンロードされません。

  • COMPRESSED 句   データを圧縮するかどうかを指定します。デフォルトは NOT COMPRESSED です。データを追加する場合 (APPEND ON) は、データを圧縮できません。

    追加するファイルが圧縮されている場合、COMPRESSED 句を指定する必要があります。

  • DELIMITED BY 句   カラム間で使用される文字列です。デフォルトのカラム・デリミタはカンマです。指定した文字列を代わりのカラム・デリミタとして使えます。文字列の最初のバイトのみ (文字) がデリミタとして使用されます。

  • ENCODING 句   すべてのデータベース・データは、データベースの文字エンコードから、指定した文字エンコードへと変換されます。ENCODING が指定されていない場合、データベースの文字エンコードが使用され、変換は実行されません。

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

    変換エラーがアンロード操作時に発生した場合、on_charset_conversion_failure オプションの設定に基づいてレポートされます。on_charset_conversion_failure オプション [データベース]を参照してください。

    次の例では、UTF-8 文字エンコードを使用してデータをアンロードします。

    UNLOAD TABLE mytable TO 'mytable_data_in_utf8.dat' ENCODING 'UTF-8';

    データにバイト順マークを含めるには、BYTE ORDER 句を指定します。

  • ENCRYPTED 句   データを暗号化するかどうかを指定します。NOT ENCRYPTED (デフォルト) を指定した場合、データは暗号化されません。キーは指定するがアルゴリズムは指定しないで ENCRYPTED KEY を使用すると、データは AES128 と指定したキーを使用して暗号化されます。キーとアルゴリズムを指定して ENCRYPTED KEY を使用すると、データは指定したキーとアルゴリズムを使用して暗号化されます。CREATE DATABASE 文で許可されたアルゴリズムであれば、どのアルゴリズムでも使用できます。単純暗号化は指定できません。CREATE DATABASE 文を参照してください。

    データを追加する場合 (APPEND ON)、データは暗号化できません。

    追加するファイルが暗号化されている場合、ENCRYPTED 句を指定する必要があります。

  • ESCAPES 句   ESCAPES を ON (デフォルト) にすると、データベース・サーバによって円記号に続く文字が認識され、特殊文字として解釈されます。改行文字は \n との組み合わせとしてインクルードされ、他の文字はタブ文字の \x09 のような 16 進の ASCII のコードとしてデータにインクルードされます。2 つの円記号 (\) は 1 つの円記号として解釈されます。円記号 (\) の後に n、x、X、\ 以外の文字がある場合、それらは別々の文字と解釈されます。たとえば、\q であれば、円記号と q が挿入されます。

  • FORMAT 句   データを TEXT フォーマットまたは BCP アウト・フォーマットで出力します。TEXT を選択すると、入力行はテキスト文字と見なされ、1 行あたり 1 つのローで構成され、カラム・デリミタ文字列によって値が区切られます。BCP を選択すると、BLOB を含む Adaptive Server Enterprise 生成の BCP アウト・ファイルをインポートできます。

  • HEXADECIMAL 句   デフォルトでは、HEXADECIMAL は ON です。バイナリ・カラム値は 0xnnnnnn... の形式で書き込まれます。ここで、0x は 1 つのゼロの後に 1 つの x が続きます。n は 16 進数の数字です。マルチバイト文字セットを扱う場合は、HEXADECIMAL ON を使用することが重要です。

    HEXADECIMAL 句を使用する場合は、FORMAT TEXT 句のみ指定してください。

  • ORDER 句    ORDER を ON (デフォルト) に設定すると、エクスポートされたデータはクラスタード・インデックス (存在する場合) の順に配列されます。クラスタード・インデックスが存在しない場合、エクスポートされたデータはプライマリ・キー値で順序付けられます。ORDER を OFF に設定すると、ORDER BY 句を使わずにテーブルから選択したときと同じ順序でデータがエクスポートされます。ORDER を ON に設定すると、エクスポートは遅くなります。ただし、LOAD TABLE 文を使って再ロードする方が、インデックス手順が単純であるため速くなります。

    UNLOAD select-statement の場合、ORDER 句は無視されます。ただし、SELECT 文で ORDER BY 句を指定すると、データを順序付けできます。

  • QUOTE 句   QUOTE 句は TEXT データ専用です。string は文字列値を囲みます。デフォルトは一重引用符 (アポストロフィ) です。

  • QUOTES 句   QUOTES をオン (デフォルト) に設定すると、エクスポートされる文字列がすべて一重引用符で囲まれます。

  • ROW DELIMITED BY 句   この句は、レコードの末尾を示す文字列を指定するときに使用します。デフォルトのデリミタ文字列は改行文字 (\n) です。ただし、長さ 255 バイトまでの任意の文字列を使用できます。たとえば、... ROW DELIMITED BY '###' ... のように指定します。他の SQL 文字列と同じフォーマット要件が適用されます。タブで区切った値を指定する場合、タブ文字を表す 16 進のエスケープ・シーケンス (9) を使用して、... ROW DELIMITED BY '\x09' ... のように指定します。デリミタ文字列に \n が含まれる場合、\r\n または \n のどちらかに一致します。

備考

UNLOAD 文では、SELECT 文からのデータをカンマ区切りのファイルにエクスポートできます。SELECT 文に ORDER BY 句が指定されていない場合は、結果セットを順序付けできません。

UNLOAD TABLE 文は、データベース・テーブルまたはマテリアライズド・ビューからファイルへの効率的な大量エクスポートができます。UNLOAD TABLE 文は、Interactive SQL 文の OUTPUT より効率的で、すべてのクライアント・アプリケーションから呼び出すことができます。

TO FILE または INTO CLIENT FILE が指定されたかどうかに応じて、データベース・サーバまたはクライアント・アプリケーションはそれぞれ、指定されたファイルに対する書き込みのオペレーティング・システム・パーミッションが付与されている必要があります。

UNLOAD TABLE の場合、バイナリ・データ型のテーブル・カラムをアンロードするときに UNLOAD TABLE は \xnnnn の形式で 16 進文字列を書き込みます。n は 16 進数字です。UNLOAD select-statement の場合、バイナリ・データ型の結果セット・カラムをアンロードするとき、UNLOAD は \0xnnnn の形式で 16 進文字列を書き込みます。 n は 16 進数字です。

プロキシ・テーブルを持つデータベースをアンロードして再ロードする場合は、ユーザがローカル・データベースとリモート・データベースの両方に対して同じパスワードを持っていても、外部ログインを作成して、ローカル・ユーザをリモート・ユーザにマッピングしてください。外部ログインがない場合は、リモート・サーバに接続できないため再ロードが失敗します。外部ログインの使用を参照してください。

変数をアンロードする場合 (INTO VARIABLE)、出力は次のように文字セットに変換されます。

  1. ENCODING 句で指定された文字セットを使用。

  2. ENCODING 句を指定しないと、変数の型が NCHAR の場合は、データベースの NCHAR 文字セットが使用されます。それ以外の場合は、データベースの CHAR 文字セットが使用されます。

また、変数が CHAR 型の場合は、選択したエンコードがデータベースの CHAR エンコードと一致する必要があります。変数が NCHAR 型の場合は、選択したエンコードがデータベースの NCHAR エンコードと一致する必要があります。BINARY 変数の場合は任意のエンコードを使用できます。

アンロードされるデータの圧縮と暗号化を選択すると、最初にデータが圧縮されます。

UNLOAD TABLE は、テーブル全体またはマテリアライズド・ビュー全体に排他ロックをかけます。

パーミッション

変数をアンロードする場合、(データ・ソースへのアクセスに必要な通常のパーミッション以外の) パーミッションは必要ありません。

UNLOAD 文を実行するのに必要なパーミッションは、データベース・サーバの -gl オプションによって次のように異なります。

  • -gl オプションが ALL に設定されている場合、UNLOAD 文内で参照されるテーブルの SELECT パーミッションが必要です。

  • -gl オプションが DBA に設定されている場合、DBA 権限を持っていることが必要です。

  • -gl オプションが NONE に設定されている場合、UNLOAD は使用できません。

-gl サーバ・オプションを参照してください。

クライアント・コンピュータにあるファイルに書き込む場合

関連する動作

なし。このクエリは現在の独立性レベルで実行されます。

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

次の例は、Products テーブルの内容を、UTF-8 でコード化されたファイル productsT.dat にアンロードします。

UNLOAD TABLE Products TO 'productsT.dat' ENCODING 'UTF-8';

次の例は、変数 @myProducts を作成してから、Products.Name カラムの変数をアンロードします。

CREATE VARIABLE @myProducts LONG VARCHAR;
UNLOAD SELECT NAME FROM Products INTO VARIABLE @myProducts;