ヘッダーをスキップ
Oracle Rdb for OpenVMS Oracle RMUリファレンス・マニュアル
リリース7.2
E06177-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

1.63 RMU Unloadコマンド

データベースの指定した表またはビューのデータを次のいずれかにコピーします。

特殊構造ファイルのデータは、RMU Loadコマンドを使用しないとリロードできません。RMSファイルのデータは、RMU Loadコマンドを使用するか、DATATRIEVEで提供される代替ユーティリティなどを使用してリロードできます。


形式



説明

RMU Unloadコマンドでは、指定した表またはビューのデータがコピーされ、特殊構造ファイルまたはRMSファイルに配置されます。RMU Unloadコマンドでは、指定した表のデータは削除されないことに注意してください。データのコピーが行われるだけです。

RMU Unloadコマンドを使用して次の処理を行うことができます。

RMU Unloadコマンドによって作成される特殊構造ファイルには、アンロードされた表のメタデータが含まれます。RMU Unloadコマンドによって作成されるRMSファイルには、データのみが含まれます。メタデータは、データ・ディクショナリか、Record_Definition修飾子で作成される.rrdファイルにあります。RMSファイルを使用するアプリケーションとデータを交換するには、Record_Definition修飾子を指定します。

LIST OF BYTE VARYING(セグメント文字列)データ型はRMSファイルにアンロードできませんが、特殊構造ファイル・タイプにはアンロードできます。

データ型変換は、Oracle Rdbで変換がサポートされる場合のみ有効です。

RMU Unloadコマンドは、読取り専用トランザクションを実行して、アンロードするメタデータとユーザー・データを収集します。これは、排他アクセスを必要としないすべての操作と互換性があります。


コマンドのパラメータ

root-file-spec

表またはビューをアンロードするデータベースのルート・ファイル指定。デフォルトのファイル拡張子は.rdbです。

table-name

アンロードする表またはビューの名前、またはシノニム。

output-file-name

出力先ファイル名。デフォルトのファイル拡張子は.unlです。

コマンドの修飾子

Allocation=n

生成される出力ファイルを事前に割り当てることができます。デフォルトの割当ては2048ブロックです。ファイルが閉じるときに、実際に使用されているサイズに縮小されます。

Allocation修飾子に指定する値が65535未満の場合、その値がExtend_Quantity修飾子の新しい最大値になります。

Buffers=n

アンロード操作で使用されるデータベース・バッファの数を指定します。値を指定しないと、データベースのデフォルト値が使用されます。この修飾子はアンロード操作のパフォーマンスに影響を与えることがありますが、通常は、データベースのデフォルト・バッファ数であれば適切なパフォーマンスが得られます。

Commit_Every=n

選択問合せをWITH HOLDカーソルに変えて、データ・ストリームがコミットによって閉じられないようにします。WITH HOLD句の詳細は、『Oracle Rdb SQLリファレンス・マニュアル』を参照してください。

Delete_Rows

データベースから行をアンロードした後でOracle Rdbで行を削除することを指定します。この修飾子をCommit_Every修飾子と一緒に使用すると、小数の行を処理できます。

制約、トリガーまたは表の保護により、行を削除できない場合、RMU Unload操作は失敗します。Delete_Rows修飾子は、更新不可のビュー、結合を含むビュー、または集計(unionまたはgroup by)を含むビューには使用できません。

Error_Delete

Noerror_Delete

エラー時に、アンロード・ファイルとレコード定義ファイルを削除するかどうかを指定します。デフォルトでは、リカバリ不可能なエラーが発生してアンロード・コマンドの実行が異常終了した場合には、RMU Unloadコマンドがアンロード・ファイルとレコード定義ファイルを削除します。Noerror_Delete修飾子を使用すると、ファイルが保持されます。

Delete_Rows修飾子を指定した場合、この修飾子のデフォルトはNoerror_Deleteになります。このデフォルトは、アンロードされた行の一部の削除がコミットされた後で、リカバリ不可能なエラーが発生した場合に、アンロード・ファイルとレコード定義ファイルを使用してデータをリロードするために必要です。アンロード・ファイルが保持されていても、エラーが深刻なため、エラーの検出後にRMUエラー・ハンドラでアンロード・ファイルへのアクセスを継続できない場合には、RMU Loadコマンドを使用してデータをリロードできないことがあります。

Delete_Rows修飾子を指定しない場合、デフォルトはError_Deleteです。

Extend_Quantity=number-blocks

アンロード・ファイル(.unl)を拡張できるサイズ(ブロック)を設定します。number-blocksパラメータの最小値は1、最大値は65535です。Allocation修飾子に65535未満の値を指定した場合は、その値がここに指定できる最大値になります。

Extend_Quantity修飾子を指定しない場合、.unlファイルを拡張できるデフォルト・ブロック・サイズは2048ブロックです。

Fields=(column-name-list)

データベースからアンロードする表またはビューの列(1つまたは複数)を指定します。複数の列を指定する場合は、列名をカンマで区切り、列名のリストをカッコで囲みます。列をアンロードする順序が表またはビューに定義されている順序と違う場合には、この修飾子に順序も指定します。表またはビューの構造の変更が役立つのは、データベースを再構築するとき、または異なるメタデータ定義の2つのデータベースの間でデータを移行するときです。デフォルトでは、表またはビューに定義されているすべての列が定義されている順序で処理されます。

Flush={Buffer_End|On_Commit}

内部RMSバッファをアンロード・ファイルにいつフラッシュするかを制御します。デフォルトでは、アンロード・ファイルが閉じられるときに、内部RMSファイル・バッファに残っているデータをRMU Unloadコマンドがフラッシュします。Flush修飾子でこの動作を変更できます。Flush修飾子には次のいずれかのオプションを指定する必要があります。

Delete_Rows修飾子を指定した場合、この修飾子のデフォルトはFlush=On_Commitになります。このデフォルトは、アンロードされた行の一部の削除がコミットされた後で、リカバリ不可能なエラーが発生した場合に、アンロード・ファイルとレコード定義ファイルを使用してデータをリロードするために必要です。

Delete_Rows修飾子を指定しない場合、デフォルトでは、アンロード・ファイルが閉じられた場合のみレコード定義バッファをフラッシュします。

内部RMSバッファをより頻繁にフラッシュすると、Noerror_Delete修飾子を指定していた場合にエラーが発生しても、アンロード・ファイル・データの損失を回避できます。アンロード・ファイルへのRMS内部バッファのフラッシュを増やすと、RMU Unloadコマンドを完了するまでの時間が長くなることがあります。

Limit_To=n

Nolimit_To

表またはビューからアンロードする行数を制限します。Limit_To修飾子の主な用途は、テスト・データベースにロードするためのデータ・サンプルのアンロードです。デフォルトはNolimit_To修飾子です。

Optimize={options}

RMU Unloadコマンドの問合せ最適化を制御します。Optimize修飾子には次の1つ以上のオプションを指定する必要があります。

Record_Definition={([No]File|Path)=name,options}

出力ファイルのレコード構造定義を含むRMSファイルを作成します。レコードの記述には、CDOレコードおよびフィールド定義形式を使用します。デフォルトのファイル拡張子は.rrdです。

File=nameまたはPath=nameオプションを省略する場合、1つのオプションを指定する必要があります。

この修飾子で生成される.rrdファイルのdate-time構文は、Oracle Rdbリリース6.0で変更されています。これは、.rrdファイルと、Oracle CDD/Repository V6.1でのdate-time構文サポートの互換性を得るために行われました。RMU Unloadコマンドは、旧バージョンのOracle RdbのRecord_Definitionで生成されるdate-time構文と、Oracle Rdbリリース6.0以上において生成される構文の両方を受け入れます。

.rrdファイルの詳細およびこの修飾子で生成されるdate-time構文の詳細は、「付録A」を参照してください。

オプションは次のとおりです。

ロードまたはアンロード操作でRecord_Definition修飾子を使用し、NullオプションをDelimited_Textオプションに指定しない場合、表の行に格納されているNULL値はロードまたはアンロードの際に保持されません。このため、表に格納されているNULL値を保持して、データベース内またはデータベース間でデータを移動する場合は、NullオプションをRecord_Definition修飾子のDelimited_Textオプションに指定します。

Reopen_Count=n

Reopen_Count=n修飾子では、出力ファイルに書き込まれるレコード数を指定できます。レコード数が指定値に到達すると、出力ファイルは再作成されます(つまり、新しいバージョンのファイルが作成されます)。Reopen_Count=n修飾子が有効なのは、Record_DefinitionまたはRms_Record_Def修飾子と一緒に使用する場合のみです。

Rms_Record_Def=({File|Path}=name [,options])

Record_Definition修飾子と同じです。Record_Definition修飾子の説明を参照してください。

Row_Count=n

Oracle RdbサーバーとRMU Unloadプロセスとの間で複数の行をバッファすることを指定します。nのデフォルト値は500行ですが、これは、作業セットのサイズやアンロードするデータの長さに応じて調整することをお薦めします。行数を増やすと、アンロード操作のCPUコストを低減できる場合があります。リモート・データベースについては、バッファされたデータを大きなネットワーク・パケットにパッケージできるため、データ量が多い場合にはネットワーク・トラフィックを大幅に低減できる可能性があります。

nに指定できる最小値は1です。デフォルトの行サイズは、Commit_Every修飾子に指定した値か、または500のいずれか小さい方になります。

Statistics_Interval=seconds

アンロード操作の進捗を確認できるように統計を定期的に表示することを指定します。

次のような統計が表示されます。

Statistics_Interval修飾子を指定すると、2つ目のパラメータが必要になります。最小値は1です。最初の間隔が経過する前にアンロード操作が正常に終了すると、アンロードされたファイル数に関する情報メッセージのみを受け取ります。最初の間隔が経過する前にアンロード操作が失敗すると、エラー・メッセージとアンロードされたレコード数の統計を受け取ります。

アンロード操作中は、いつでも[Ctrl]と[T]を同時に押して現在の統計を表示できます。

Transaction_Type[=(transaction_mode,options,...)]

トランザクション・モード、分離レベル、およびトランザクションの待機動作を指定できます。

次のいずれかのキーワードを使用してトランザクション・モードを制御します。

キーワードIsolation_Level=[option]に次のいずれかのオプションを使用して、トランザクションの分離レベルを指定します。

トランザクション分離レベルの詳細は、『Oracle Rdb SQLリファレンス・マニュアル』のSET TRANSACTION文の説明を参照してください。

次のいずれかのキーワードを使用して待機設定を指定します。

Virtual_Fields=[No]Automatic,[No]Computed_By]

Novirtual_Fields

Virtual_Fields修飾子を使用して、AUTOMATICまたはCOMPUTED BYフィールドを実際のデータとしてアンロードします。この修飾子を使用することで、計算値を別のアプリケーションに送信することができます。また、この修飾子を使用すると、表のUNIONであるビュー、または複数の表の列で構成されるビューを介したアンロードも許可されます。たとえば、2つの表EMPLOYEESおよびRETIRED_EMPLOYEESがある場合、ビューALL_EMPLOYEES(EMPLOYEES表とRETIRED_EMPLOYEES表のUNION)をアンロードできます。

Novirtual_Fields修飾子はデフォルトです。Virtual_Fields=(Noautomatic,Nocomputed_By)修飾子と同じです。

Virtual_Fields修飾子をキーワードなしで指定すると、表のCOMPUTED BYおよびAUTOMATIC列と計算されたVIEW列を含むすべてのフィールドがアンロードされます。

Virtual_Fields=(Automatic,Nocomputed_By)修飾子またはVirtual_Fields=Nocomputed_By修飾子を指定すると、データはAutomaticフィールドのみからアンロードされます。Virtual_Fields=(Noautomatic,Computed_By)修飾子またはVirtual_Fields=Noautomatic修飾子を指定すると、データはComputed_Byフィールドのみからアンロードされます。


使用上の注意


例1

次のコマンドは、EMPLOYEE_ID列とLAST_NAME列の値をmf_personnelデータベースのEMPLOYEES表からアンロードします。データはnames.unlに格納されます。


$ RMU/UNLOAD -
_$ /FIELDS=(EMPLOYEE_ID, LAST_NAME) -
_$ MF_PERSONNEL EMPLOYEES NAMES.UNL
%RMU-I-DATRECUNL, 100 data records unloaded.

例2

次のコマンドは、EMPLOYEES表をmf_personnelデータベースからアンロードし、データをRMSファイルnames.unlに格納します。names.rrdファイルには、names.unlのデータのレコード構造定義が含まれます。


$ RMU/UNLOAD/RECORD_DEFINITION=FILE=NAMES.RRD MF_PERSONNEL -
_$ EMPLOYEES NAMES.UNL
%RMU-I-DATRECUNL, 100 data records unloaded.

例3

次のコマンドは、EMPLOYEE_ID列とLAST_NAME列の値をmf_personnelデータベースのEMPLOYEES表からアンロードし、デリミタのデフォルト値を受け入れます。これは、names.unlファイルの表示によって示されています。


$ RMU/UNLOAD/FIELDS=(EMPLOYEE_ID, LAST_NAME) -
-$ /RECORD_DEFINITION=(FILE=NAMES, FORMAT=DELIMITED_TEXT) -
-$ MF_PERSONNEL EMPLOYEES NAMES.UNL
%RMU-I-DATRECUNL, 100 data records unloaded.
$ !
$ ! TYPE the names.unl file to see the effect of the RMU Unload
$ ! command.
$ !
$ TYPE NAMES.UNL

"00164","Toliver       "
"00165","Smith         "
"00166","Dietrich      "
"00167","Kilpatrick    "
"00168","Nash          "
   .
   .
   .

例4

次のコマンドは、EMPLOYEE_ID列とLAST_NAME列の値をmf_personnelデータベースのEMPLOYEES表からアンロードし、各列の最初と最後を示す文字列(接頭辞文字列と接尾辞文字列)としてアスタリスク(*)記号を指定します。


$ RMU/UNLOAD/FIELDS=(EMPLOYEE_ID, LAST_NAME) -
_$ /RECORD_DEFINITION=(FILE=NAMES, -
_$ FORMAT=DELIMITED_TEXT, SUFFIX="*", -
_$ PREFIX="*") -
_$ MF_PERSONNEL EMPLOYEES NAMES.UNL
%RMU-I-DATRECUNL, 100 data records unloaded.
$ !
$ ! TYPE the names.unl file to see the effect of the RMU Unload
$ ! command.
$ !
$ TYPE NAMES.UNL
*00164*,*Toliver       *
*00165*,*Smith         *
*00166*,*Dietrich      *
*00167*,*Kilpatrick    *
*00168*,*Nash          *
*00169*,*Gray          *
*00170*,*Wood          *
*00171*,*D'Amico       *
   .
   .
   .

例5

次のコマンドは、mf_personnelデータベースのEMPLOYEES表のすべての列の値をアンロードし、Record_Definition修飾子にFormat=Textオプションを指定します。Oracle RMUによって、すべてのデータが印刷可能なテキストに変換されます。これは、text_output.unlファイルの表示によって確認できます。


$ RMU/UNLOAD/RECORD_DEFINITION=(FILE=TEXT_RECORD,FORMAT=TEXT) -
_$ MF_PERSONNEL EMPLOYEES TEXT_OUTPUT
%RMU-I-DATRECUNL, 100 data records unloaded.
$ !
$ ! TYPE the text_output.unl file to see the effect of the RMU Unload
$ ! command.
$ !
$ TYPE TEXT_OUTPUT.UNL
00164Toliver       Alvin     A146 Parnell Place
Chocorua            NH03817M19470328000000001
00165Smith         Terry     D120 Tenby Dr.
Chocorua            NH03817M19540515000000002
00166Dietrich      Rick       19 Union Square
Boscawen            NH03301M19540320000000001
   .
   .
   .

例6

次のコマンドは、EMPLOYEE_ID列とLAST_NAME列の値をmf_personnelデータベースのEMPLOYEES表からアンロードし、統計を2秒間隔で端末に表示するようにリクエストします。


$ RMU/UNLOAD/FIELDS=(EMPLOYEE_ID, LAST_NAME)   -
_$ /STATISTICS_INTERVAL=2             -
_$ MF_PERSONNEL EMPLOYEES NAMES.UNL


---------------------------------------------------------------------------
ELAPSED:0 00:00:02.16  CPU: 0:00:00.26  BUFIO: 13  DIRIO: 57  FAULTS: 598
  0 records unloaded.
---------------------------------------------------------------------------
---------------------------------------------------------------------------
ELAPSED:0 00:00:04.32  CPU: 0:00:00.68  BUFIO: 18  DIRIO: 102  FAULTS: 2121

  0 records unloaded.
---------------------------------------------------------------------------
---------------------------------------------------------------------------
ELAPSED:0 00:00:06.32  CPU: 0:00:00.92  BUFIO: 31  DIRIO: 158  FAULTS: 2483

  39 records unloaded.
---------------------------------------------------------------------------
%RMU-I-DATRECUNL, 100 data records unloaded.
$

例7

次の例は、次の手順を使用してEMPLOYEES表のデータのサブセットをアンロードします。

  1. マサチューセッツ州に住む従業員のみを含む、EMPLOYEES表の一時ビューを作成します。

  2. RMU Unloadコマンドを使用してこのビューのデータをアンロードします。

  3. 一時ビューを削除します。


$ SQL
SQL> ATTACH 'FILENAME MF_PERSONNEL';
SQL> CREATE VIEW MA_EMPLOYEES
cont>       (EMPLOYEE_ID,
cont>        LAST_NAME,
cont>        FIRST_NAME,
cont>        MIDDLE_INITIAL,
cont>        STATE,
cont>        STATUS_CODE)
cont>  AS SELECT
cont>        E.EMPLOYEE_ID,
cont>        E.LAST_NAME,
cont>        E.FIRST_NAME,
cont>        E.MIDDLE_INITIAL,
cont>        E.STATE,
cont>        E.STATUS_CODE
cont>     FROM EMPLOYEES E
cont>     WHERE E.STATE='MA';
SQL> COMMIT;
SQL> EXIT;

$ RMU/UNLOAD/RECORD_DEFINITION=(FILE=MA_EMPLOYEES,FORMAT=DELIMITED_TEXT) -
_$ MF_PERSONNEL MA_EMPLOYEES MA_EMPLOYEES.UNL
%RMU-I-DATRECUNL, 9 data records unloaded.

$ SQL
SQL> ATTACH 'FILENAME MF_PERSONNEL';
SQL> DROP VIEW MA_EMPLOYEES;
SQL> COMMIT;

例8

次の例では、NullオプションをRecord_Definition修飾子のDelimited_Textオプションに指定しないかぎり、空白列のNULL値が保持されなことを示します。


$ SQL
SQL> ATTACH 'FILENAME MF_PERSONNEL';
SQL> --
SQL> -- Create the NULL_DATE table:
SQL> CREATE TABLE NULL_DATE
cont> (COL1 VARCHAR(5),
cont>  DATE1 DATE,
cont>  COL2 VARCHAR(5));
SQL> --
SQL> -- Store a row that does not include a value for the DATE1
SQL> -- column of the NULL_DATE table:
SQL> INSERT INTO NULL_DATE
cont>            (COL1, COL2)
cont>    VALUES ('first','last');
1 row inserted
SQL> --
SQL> COMMIT;
SQL> --
SQL> -- The previous SQL INSERT statement causes a null value to
SQL> -- be stored in NULL_DATE:
SQL> SELECT * FROM NULL_DATE;
 COL1    DATE1                     COL2
 first   NULL                      last
1 row selected
SQL> --
SQL> DISCONNECT DEFAULT;
SQL> EXIT;
$ !
$ ! In the following RMU Unload command, the Record_Definition
$ ! qualifier is used to unload the row with the NULL value, but
$ ! the Null option is not specified:
$ RMU/UNLOAD/RECORD_DEFINITION=(FILE=NULL_DATE,FORMAT=DELIMITED_TEXT) -
_$  MF_PERSONNEL NULL_DATE NULL_DATE
%RMU-I-DATRECUNL, 1 data records unloaded.
$ !
$ ! The null_date.unl file created by the previous unload
$ ! operation does not preserve the NULL value in the DATE1 column.
$ ! Instead, the Oracle Rdb default date value is used:
$ TYPE NULL_DATE.UNL
"first","1858111700000000","last"
$ !
$ ! This time, unload the row in NULL_DATE with the Null option to
$ ! the Record_Definition qualifier:
$ RMU/UNLOAD MF_PERSONNEL NULL_DATE NULL_DATE -
_$ /RECORD_DEFINITION=(FILE=NULL_DATE.RRD, FORMAT=DELIMITED_TEXT, NULL="*")
%RMU-I-DATRECUNL,   1 data records unloaded.
$ !
$ TYPE NULL_DATE.UNL
"first",*,"last "
$ SQL
SQL> ATTACH 'FILENAME MF_PERSONNEL';
SQL> --
SQL> -- Delete the existing row from NULL_DATE:
SQL> DELETE FROM NULL_DATE;
1 row deleted
SQL> --
SQL> COMMIT;
SQL> EXIT;
$ !
$ ! Load the row that was unloaded back into the table,
$ ! using the null_date.unl file created by the
$ ! previous RMU Unload command:
$ RMU/LOAD MF_PERSONNEL /RECORD_DEFINITION=(FILE=NULL_DATE.RRD, -
_$ FORMAT=DELIMITED_TEXT, NULL="*") NULL_DATE NULL_DATE
%RMU-I-DATRECREAD,  1 data records read from input file.
%RMU-I-DATRECSTO, 1 data records stored.
$ !
$ SQL
SQL> ATTACH 'FILENAME MF_PERSONNEL';
SQL> --
SQL> -- Display the row stored in NULL_DATE.
SQL> -- The NULL value stored in the data row
SQL> -- was preserved by the load and unload operations:
SQL> SELECT * FROM NULL_DATE;
 COL1    DATE1                     COL2
 first   NULL                      last
1 row selected

例9

次の例では、Record_Definition修飾子のNull=""オプションの使用方法を示します。これによって、.unlファイルで空文字列(間に空白のない2つのカンマで表される)となっているデータには、データベース内に対応する列がありNULLとしてフラグされていることをOracle RMUに知らせます。

この例の前半では、.unlファイルの内容と、.unlファイルをロードするために使用するRMU Loadコマンドを示します。.unlファイルの各レコードの終端文字はシャープ記号(#)です。この例の後半では、データをアンロードし、NULLとフラグされた列を出力ファイル内ではアスタリスクで表すことを指定します。


"90021","ABUSHAKRA","CAROLINE","A","5 CIRCLE STREET",,
"CHELMSFORD", "MA", "02184", "1960061400000000"#
"90015","BRADFORD","LEO","B","4 PLACE STREET",, "NASHUA","NH",
"03030", "1949051800000000"#
$ !
$ RMU/LOAD/FIELDS=(EMPLOYEE_ID, LAST_NAME, FIRST_NAME, -
_$ MIDDLE_INITIAL, ADDRESS_DATA_1, ADDRESS_DATA_2,  -
_$ CITY, STATE, POSTAL_CODE, BIRTHDAY) -
_$ /RECORD_DEFINITION=(FILE= EMPLOYEES.RRD, -
_$ FORMAT=DELIMITED_TEXT, -
_$ TERMINATOR="#", -
_$ NULL="") -
_$ MF_PERSONNEL EMPLOYEES EMPLOYEES.UNL
%RMU-I-DATRECREAD,  2 data records read from input file.
%RMU-I-DATRECSTO,   2 data records stored.
$ !
$ ! Unload this data first without specifying the Null option:
$ RMU/UNLOAD/FIELDS=(EMPLOYEE_ID, LAST_NAME, FIRST_NAME, -
_$ MIDDLE_INITIAL, ADDRESS_DATA_1, ADDRESS_DATA_2,  -
_$ CITY, STATE, POSTAL_CODE, BIRTHDAY) -
_$ /RECORD_DEFINITION=(FILE= EMPLOYEES.RRD, -
_$ FORMAT=DELIMITED_TEXT, -
_$ TERMINATOR="#") -
_$ MF_PERSONNEL EMPLOYEES EMPLOYEES.UNL
%RMU-I-DATRECUNL,   102 data records unloaded.
$ !
$ ! The ADDRESS_DATA_2 field appears as a quoted string:
$ TYPE EMPLOYEES.UNL
   .
   .
   .
"90021","ABUSHAKRA     ","CAROLINE  ","A","5 CIRCLE STREET        ","
            ","CHELMSFORD          ","MA","02184","1960061400000000"#
$ !
$ ! Now unload the data with the Null option specified:
$ RMU/UNLOAD/FIELDS=(EMPLOYEE_ID, LAST_NAME, FIRST_NAME, -
_$ MIDDLE_INITIAL, ADDRESS_DATA_1, ADDRESS_DATA_2,  -
_$ CITY, STATE, POSTAL_CODE, BIRTHDAY) -
_$ /RECORD_DEFINITION=(FILE= EMPLOYEES.RRD, -
_$ FORMAT=DELIMITED_TEXT, -
_$ TERMINATOR="#", -
_$ NULL="*") -
_$ MF_PERSONNEL EMPLOYEES EMPLOYEES.UNL
%RMU-I-DATRECUNL,   102 data records unloaded.
$ !
$ ! The value for ADDRESS_DATA_2 appears as an asterisk:
$ !
$ TYPE EMPLOYEES.UNL
   .
   .
   .
"90021","ABUSHAKRA     ","CAROLINE  ","A","5 CIRCLE STREET       ",*,
"CHELMSFORD          ","MA","02184","1960061400000000"#

例10

次の例は、RMU Unloadコマンドでトランザクションを指定します。これは、SQLコマンドSET TRANSACTION READ WRITE WAIT 36 RESERVING table1 FOR SHARED READと同じです。


$ RMU/UNLOAD-
    /TRANSACTION_TYPE=(SHARED,ISOLATION=REPEAT,WAIT=36)-
    SAMPLE.RDB-
    TABLE1-
    TABLE.DAT

例11

次の例は、以前のリリースでのデフォルト・トランザクション・スタイルであるオプションを指定します。


$ RMU/UNLOAD-
    /TRANSACTION_TYPE=(READ_ONLY,ISOLATION_LEVEL=SERIALIZABLE)-
    SAMPLE.RDB-
    TABLE1-
    TABLE1.DAT

例12

データベースの現在のスナップショット設定が遅延に設定されている場合は、分離レベルをRead_Committedにして読取り/書込みトランザクションを開始した方が効率がよい場合があります。これを行うと、トランザクションがすぐに開始され(読取り専用トランザクションはストールする可能性がある)、選択した分離レベルによって行のロックが最小限に保たれます。


$ RMU/UNLOAD-
    /TRANSACTION_TYPE=(SHARED_READ,ISOLATION=READ_COMMITTED)-
    SAMPLE.RDB-
    TABLE1-
    TABLE1.DAT

トランザクション・タイプとしてAutomaticを使用すると、様々なデータベース設定に適応します。


$ RMU/UNLOAD-
    /TRANSACTION_TYPE=(AUTOMATIC)-
    SAMPLE.RDB-
    TABLE1-
    TABLE1.DAT

例13

次の例は、フラグSTRATEGYとITEM_LISTの出力を示します。これにより、Optimize修飾子によって、順次アクセスの使用が指定されたこと、デフォルトのオプティマイザ・プリファレンスとしてTotal_Timeの使用が設定されたことが示されます。


$ DEFINE RDMS$SET_FLAGS "STRATEGY,ITEM_LIST"
$ RMU/UNLOAD/OPTIMIZE=SEQUENTIAL_ACCESS PERSONNEL EMPLOYEES E.DAT
   .
   .
   .
~H Request Information Item List: (len=11)
0000 (00000) RDB$K_SET_REQ_OPT_PREF "0"
0005 (00005) RDB$K_SET_REQ_OPT_SEQ "1"
000A (00010) RDB$K_INFO_END
Get     Retrieval sequentially of relation EMPLOYEES
%RMU-I-DATRECUNL,   100 data records unloaded.

例14

AUTOMATIC列は表のINSERT操作やUPDATE操作の際に評価されます。たとえば、AUTOMATIC列に、最後の操作のタイムスタンプが記録されることがあります。表を再編成している場合、データをアンロードし、記憶域マップと表の索引を再作成してからリロードする必要があることがあります。ただし、古い監査データは同じであることが必要です。

通常、RMU UnloadコマンドではAUTOMATICとマークされた列はアンロードされません。Virtual_Fields修飾子にキーワードAutomaticを付けて使用し、この動作をリクエストする必要があります。


$ rmu/unload/virtual_fields=(automatic) payroll_db people people.unl

データベースの再構築の後で、データをリロードできます。ターゲット列もAUTOMATICと定義されている場合、RMU Loadプロセスではそれらの列には書き込まれません。Virtual_Fields修飾子にキーワードAutomaticを付けて使用し、このアクションをリクエストする必要があります。


$ rmu/load/virtual_fields=(automatic) payroll_db people people.unl

例15

この例は、Delete_Rows修飾子の動作を示します。まず、表の行数を表示するためにSQLを使用します。RMU UnloadコマンドによってファイルPEOPLE.COLUMNSが確認されます(SYS$OUTPUTに書き込まれます)。


$ define sql$database db$:scratch
$ sql$ select count (*) from people;

         100
1 row selected
$ rmu/unload/fields="@people.columns" -
    sql$database -
    /record_definition=(file:people,format:delimited) -
    /delete_rows -
    people -
    people2.dat
  EMPLOYEE_ID
  LAST_NAME
  FIRST_NAME
  MIDDLE_INITIAL
  SEX
  BIRTHDAY
%RMU-I-DATRECERA,   100 data records erased.
%RMU-I-DATRECUNL,   100 data records unloaded.

その後の問合せが、行が削除されたことを示します。


$ sql$ select count (*) from people;

           0
1 row selected

例16

次の例は、XMLサポートに対応するRMU Unloadコマンド・オプションの出力を示します。この例で示す2つのファイルは、次のRMU Unloadコマンドによって作成されます。


$ rmu/unload -
    /record_def=(format=xml,file=work_status) -
    mf_personnel -
    work_status -
    work_status.xml

Output WORK_STATUS.DTD file

<?xml version="1.0"?>
<!-- RMU Unload for Oracle Rdb V7.1-00 -->
<!-- Generated: 16-MAR-2001 22:26:47.30 -->

<!ELEMENT WORK_STATUS (RMU_ROW*)>
<!ELEMENT RMU_ROW (
 STATUS_CODE,
 STATUS_NAME,
 STATUS_TYPE
)>
<!ELEMENT STATUS_CODE (#PCDATA)>
<!ELEMENT STATUS_NAME (#PCDATA)>
<!ELEMENT STATUS_TYPE (#PCDATA)>
<!ELEMENT NULL (EMPTY)>

Output WORK_STATUS.XML file

<?xml version="1.0"?>
<!-- RMU Unload for Oracle Rdb V7.1-00 -->
<!-- Generated: 16-MAR-2001 22:26:47.85 -->

<!DOCTYPE WORK_STATUS SYSTEM "work_status.dtd">

<WORK_STATUS>
 <RMU_ROW>
  <STATUS_CODE>0</STATUS_CODE>
  <STATUS_NAME>INACTIVE</STATUS_NAME>
 <STATUS_TYPE>RECORD EXPIRED</STATUS_TYPE>
 </RMU_ROW>
 <RMU_ROW>
  <STATUS_CODE>1</STATUS_CODE>
  <STATUS_NAME>ACTIVE  </STATUS_NAME>
  <STATUS_TYPE>FULL TIME     </STATUS_TYPE>
 </RMU_ROW>
 <RMU_ROW>
  <STATUS_CODE>2</STATUS_CODE>
  <STATUS_NAME>ACTIVE  </STATUS_NAME>
  <STATUS_TYPE>PART TIME     </STATUS_TYPE>
 </RMU_ROW>
</WORK_STATUS>

<!-- 3 rows unloaded -->

例17

次の例では、Flush=On_Commit修飾子を指定した場合、Commit_Every修飾子の値はRow_Count値と等しいかその倍数であることが必要なことを示します。内部RMSバッファがアンロード・ファイルにフラッシュされた後でアンロード・トランザクションのコミットが行われるためです。これにより、エラーが発生してもデータの損失が防がれます。


$RMU/UNLOAD/ROW_COUNT=5/COMMIT_EVERY=2/FLUSH=ON_COMMIT MF_PERSONNEL -
_$ EMPLOYEES EMPLOYEES
%RMU-F-DELROWCOM, For DELETE_ROWS or FLUSH=ON_COMMIT the COMMIT_EVERY value must
 equal or be a multiple of the ROW_COUNT value.
The COMMIT_EVERY value of 2 is not equal to or a multiple of the ROW_COUNT value
 of 5.
%RMU-F-FTL_UNL, Fatal error for UNLOAD operation at 27-Oct-2005 08:55:14.06

例18

次の例では、Noerror_Delete修飾子を指定するとアンロード・ファイルとレコード定義ファイルがエラー時に削除されないこと、Error_Delete修飾子を指定するとこれらのファイルがエラー時に削除されることを示します。エラーが発生したときにアンロード・ファイルが空であれば削除されます。


$RMU/UNLOAD/NOERROR_DELETE/ROW_ACOUNT=50/COMMIT_EVERY=50 MF_PERSONNEL -
_$ EMPLOYEES EMPLOYEES.UNL

%RMU-E-OUTFILNOTDEL, Fatal error, the output file is not deleted but may not
be useable,
50 records have been unloaded.
-COSI-F-WRITERR, write error
-RMS-F-FUL, device full  (insufficient space for allocation)

$RMU/UNLOAD/ERROR_DELETE/ROW_COUNT=50/COMMIT_EVERY=50 MF_PERSONNEL -
_$ EMPLOYEES EMPLOYEES.UNL

%RMU-E-OUTFILDEL, Fatal error, output file deleted
-COSI-F-WRITERR, write error
-RMS-F-FUL, device full (insufficient space for allocation)