データソースからファイルにデータをアンロードします。
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 } | 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 が指定されていないかぎり、そのファイルが上書きされます。パスは、クライアントコンピュータ上で、クライアントアプリケーションの現在の作業フォルダとの相対パスとして解決されます。
INTO VARIABLE 句 データのアンロード先変数。変数がすでに存在し、CHAR、NCHAR、または BINARY 型である必要があります。APPEND オプションを指定すると、アンロードされたデータが変数の現在の内容に連結されます。
APPEND 句 APPEND を ON にすると、アンロードされたデータは、指定されたファイルの最後に追加されます。APPEND を OFF にすると、指定されたファイルの内容がアンロードされたデータに置換されます。APPEND はデフォルトでは OFF になっています。COMPRESSED または ENCRYPTED 句を指定したときは、この句を指定できません。また、追加されるファイルが圧縮または暗号化されているときは使用できません。
BYTE ORDER MARK 句 この句は、バイトオーダーマーク (BOM) を書き込むどうかを制御するときに指定します。アンロードの送信先がローカルファイルまたはクライアントファイルの場合、このオプションはデフォルトで ON です。BYTE ORDER MARK オプションが ON で ENCODING が UTF-8 または UTF-16の場合、BOM は書き込まれません。BYTE ORDER MARK が OFF の場合、BOM はアンロードされません。
COMPRESSED 句 データを圧縮するかどうかを指定します。デフォルトは NOT COMPRESSED です。データを追加する場合 (APPEND ON) は、データを圧縮できません。
COLUMN DELIMITED BY および DELIMITED BY 句 カラム間で使用される文字列です。デフォルトのカラムデリミタはカンマです。最長で 255 バイトの文字列を指定して、代替のカラムデリミタを指定できます。
ENCODING 句 すべてのデータベースデータは、データベースの文字エンコードから、指定した CHAR または NCHAR エンコードへと変換されます。ENCODING が指定されていない場合、データベースの CHAR エンコードが使用されます。
変換エラーがアンロード操作時に発生した場合、on_charset_conversion_failure オプションの設定に基づいてレポートされます。
データにバイトオーダーマークを含めるには、BYTE ORDER 句を指定します。
ENCRYPTED 句 データを暗号化するかどうかを指定します。NOT ENCRYPTED (デフォルト) を指定した場合、データは暗号化されません。キーは指定するがアルゴリズムは指定しないで ENCRYPTED KEY を使用すると、データは AES128 と指定したキーを使用して暗号化されます。このキーには文字列または変数名を使用できます。キーとアルゴリズムを指定して ENCRYPTED KEY を使用すると、データは指定したキーとアルゴリズムを使用して暗号化されます。CREATE DATABASE 文で許可されたアルゴリズムであれば、どのアルゴリズムでも使用できます。単純暗号化は指定できません。
データを追加する場合 (APPEND ON)、データは暗号化できません。
ESCAPES 句 ESCAPES を ON (デフォルト) にすると、データベースサーバはエスケープ文字を書き込みます。改行文字は \n との組み合わせとして書き込まれ、他の文字はタブ文字の \x09 のような 16 進の ASCII のコードとしてデータにインクルードされます。2 つの円記号 (\) は 1 つの円記号として書き込まれます。円記号 (\) の後に n、x、X、\ 以外の文字がある場合、それらは別々の文字として書き込まれます。たとえば、\q であれば、円記号と q が挿入されます。エスケープ文字に指定する文字列は 1 マルチバイト文字を超えないようにすることをおすすめします。
FORMAT 句 データを TEXT フォーマットまたは BCP アウトフォーマットで出力します。TEXT を選択すると、出力行はテキスト文字として書き込まれ、1 行あたり 1 つのローで構成され、カラムデリミタ文字列によって値が区切られます。BCP を選択すると、BLOB などのデータが、Adaptive Server Enterprise で使用する BCP 入力ファイルとしてエクスポートされます。デフォルトのフォーマットは TEXT です。
HEXADECIMAL 句 デフォルトでは、HEXADECIMAL は ON です。バイナリカラム値は 0xnnnnnn... の形式で書き込まれます。ここで、0x は 1 つのゼロの後に 1 つの x が続きます。n は 16 進数の数字です。マルチバイト文字セットを扱う場合は、HEXADECIMAL ON を使用することが重要です。
HEXADECIMAL 句を使用する場合は、FORMAT TEXT 句のみ指定してください。
ESCAPE CHARACTER 句 この句は、データで使用するエスケープ文字を指定するときに使用します。16 進のコードと記号として書き込まれている文字に使用するデフォルトのエスケープ文字は円記号 (\) です。たとえば、\x0A は改行文字です。エスケープ文字は、ESCAPE CHARACTER 句を使って変更することができます。
エスケープ文字に指定する文字列は 1 マルチバイト文字を超えないようにすることをお勧めします。
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 '###' ...
のように指定します。タブで区切った値を指定する場合、タブ文字を表す 16 進のエスケープシーケンス (9) を使用して、... ROW DELIMITED BY '\x09' ...
のように指定します。デリミタ文字列に \n が含まれる場合、\r\n または \n のどちらかに一致します。
select-statement 文では、SELECT 文からのデータをカンマ区切りのファイルにエクスポートできます。SELECT 文に ORDER BY 句が指定されていない場合は、結果セットを順序付けできません。
UNLOAD TABLE 文は、データベーステーブルまたはマテリアライズドビューからファイルへの効率的な大量エクスポートができます。UNLOAD TABLE 文は、Interactive SQL 文の OUTPUT より効率的で、すべてのクライアントアプリケーションから呼び出すことができます。
INTO FILE または INTO CLIENT FILE が指定されたかどうかに応じて、データベースサーバまたはクライアントアプリケーションはそれぞれ、指定されたファイルに対する書き込みのオペレーティングシステムパーミッションが付与されている必要があります。
バイナリデータ型のテーブルカラムをアンロードする場合、UNLOAD TABLE は \xnnnn の形式で 16 進文字列を書き込みます。n は 16 進数字です。
プロキシテーブルを持つデータベースをアンロードして再ロードする場合は、ユーザがローカルデータベースとリモートデータベースの両方に対して同じパスワードを持っていても、外部ログインを作成して、ローカルユーザをリモートユーザにマッピングしてください。外部ログインがない場合は、リモートサーバに接続できないため再ロードが失敗します。
変数をアンロードする場合 (INTO VARIABLE)、出力は次のように文字セットに変換されます。
CHAR 変数に CHAR エンコードで書き込みます。ENCODING 句は CHAR エンコードと一致する必要があります。
NCHAR 変数に NCHAR エンコードで書き込みます。ENCODING 句は NCHAR エンコードと一致する必要があります。
BINARY 変数に BINARY エンコードで書き込みます。ENCODING は BINARY エンコーディングと一致する必要があります。それ以外の場合、CHAR エンコーディングが使用されます。
アンロードされるデータの圧縮と暗号化を選択すると、最初にデータが圧縮されます。
UNLOAD TABLE は、テーブル全体またはマテリアライズドビュー全体に排他ロックをかけます。
この文の実行中に、進行状況メッセージの表示を要求できます。
また、Progress 接続プロパティを使用して、文がどの程度実行されたかを確認することもできます。
日付値の最大精度を保持するには、date_format を YYYY-MM-DD に設定します。
TIMESTAMP 値の最大精度を保持するには、timestamp_format を YYYY-MM-DD HH:NN:SS.SSSSSS に設定します。
TIMESTAMP WITH TIMEZONE 値の最大精度を保持するには、timestamp_with_time_zone_format を YYYY-MM-DD HH:NN:SS.SSSSSS+HH:NN に設定します。
変数へのアンロード時には、権限は必要ありません。それ以外の場合、必要な権限は、データベースサーバの -gl オプションによって異なります。
-gl オプションが ALL に設定されている場合は、そのテーブルの所有者であるか、そのテーブルに対する SELECT 権限を持っているか、または SELECT ANY TABLE システム権限を持っていることが必要です。
-gl オプションが DBA に設定されている場合は、SELECT ANY TABLE システム権限が必要です。
-gl オプションが NONE に設定されている場合、UNLOAD は使用できません。
クライアントコンピュータにあるファイルにアンロードする場合
WRITE CLIENT FILE 権限が必要です。
そのファイルが置かれているディレクトリに対する書き込みパーミッションが必要です。
allow_write_client_file データベースオプションが有効になっている必要があります。
write_client_file セキュリティ機能が有効になっている必要があります。
なしこのクエリは現在の独立性レベルで実行されます。
SQL/2008 ベンダー拡張。
次の例は、Products テーブルの内容を、UTF-8 でコード化されたファイル productsT.dat にアンロードします。
UNLOAD TABLE GROUPO.Products TO 'c:\\temp\\productsT.dat' ENCODING 'UTF-8'; |
次の例は、変数 @myProducts を作成してから、Products.Name カラムの変数をアンロードします。
CREATE VARIABLE @myProducts LONG VARCHAR; UNLOAD SELECT NAME FROM GROUPO.Products INTO VARIABLE @myProducts ESCAPE CHARACTER '!'; |
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |