企業の運営においては、 IBM i オペレーティング・システム相互間でデータを移動する必要のあるような 状況が数多く発生します。
システム間でデータの移動が必要になる状況として、新しい販売店が地域内に開設され、既設の販売店の得 意先の中には、その所在地によって、新設の販売店に移る場合があります。販売店が閉業したり、 Spiffy 社の販売および保守サービスの代理業務を停止する場合もあるでしょう。そのような販売店の在庫および必 要な保守サービス情報については、地域支社または他の域内販売店に割り振らなければなりません。販売店 によっては、成長が著しく、システムのアップグレードが必要になり、データベース全体を新しいシステム に移動しなければならないことも考えられます。
システム相互間でデータを移動する方法としては、以下に挙げるものがあります。
v ユーザー作成のアプリケーション・プログラム v 対話式 SQL (ISQL)
v DB2 for i Query 管理機能の機能 v テープ装置相互間でのコピー
v DDM の使用によるファイル・コピー・コマンド v ネットワーク・ファイル・コマンド
v IBM iの保管および復元コマンド
ユーザー作成のアプリケーション・プログラムの作成:
分散作業単位 (DUW) 接続管理でコンパイルしたプログラムは、リモート・データベースとローカル・デ ータベースに接続することができ、一方のシステムから FETCH し、もう一方に INSERT して、データを 移動できます。
複数行 FETCH と複数行 INSERT を使用すると、レコードのブロックを一時に処理することができます。
コミットメント制御を使用して、データの移動中にある時点でチェックポイントを取り、障害が起きたとき に完全にコピーを再度開始しなくても済むようにすることができます。
対話式 SQL を使用したデータベースの Query:
SQL SELECT ステートメントおよび対話式 SQL を使用し、ローカル・システム上にあるテーブルの作成 または更新を行うのに必要なデータに関し、別の IBM i オペレーティング・システム上にあるデータベー スに照会することができます。
SELECT ステートメントでは、所要のデータが入っているテーブル名と列、およびどの行のデータを検索
するのかを決める選択基準またはフィルターを指定することができます。 SELECT ステートメントが正常 に実行された場合には、指定したテーブルの 1 行または複数行が取り出される結果になります。
SQL を使用すると、1 つのテーブルからデータを取り出すだけでなく、結合操作を使用することによっ て、複数のテーブルに含まれている列から情報を取り出すことができます。 SELECT ステートメントが正 常に実行された場合には、指定したテーブル (複数可) の 1 行以上が取り出される結果になります。戻さ れる行の列内のデータ値は、指定した表に含まれているデータ値を合成したものになります。
対話式 SQL 照会を使用すると、照会の結果は、ローカル・システムのデータベース・ファイルに入れるこ とができます。コミットメント制御レベルが対話式 SQL 処理に指定された場合、それはサーバーに適用さ れます。ローカル・システムのデータベース・ファイルのコミットメント制御レベルは *NONE になりま す。
対話式 SQL を使用すると、次のことを行うことができます。
v 選択の結果を入れる新しいファイルを作成する。
v 既存のファイルを置き換える。
v ファイル内に新しいメンバーを作成する。
v メンバーを置き換える。
v 結果を既存のメンバーに追加する。
KC105 販売店が部品番号 1234567 の在庫全量を KC110 に転送する状況を考えてみます。KC110 では、
KC105 から調達する部品について、KC105 データベースに照会します。この在庫照会の結果は、KC110 システムですでに存在しているデータベース・ファイルに戻されます。以下にこの作業を完了するために使 用できる処理を示します。
SQL 対話式セッションの開始 (STRSQL) コマンドを使用して、「対話式 SQL」画面を表示します。新しい データベースの SQL ステートメント (CONNECT 以外) を入力する前に、この操作の結果がローカル・シ ステム上のデータベース・ファイルに送られるように指定します。これを行うためには、以下のステップに 従ってください。
1. 「SQL ステートメントの入力」画面でサービスのオプションを選択してください。
2. 「サービス」画面でセッション属性変更のオプションを選択してください。
3. 「セッション属性」画面で出力装置選択のオプションを入力してください。
4. 出力装置フィールドにデータベース・ファイルを表す 3 を入力して、実行キーを押してください。次の 画面が表示されます。
セッション属性変更
選択項目を入力して、実行キーを押してください。
ファイル . . . . QSQLSELECT 名前 ライブラリー . . . . QGPL 名前
メンバー. . . . *FILE 名前、*FILE, *FIRST オプション . . . . 1 1= ファイルの作成 2= ファイルの置き換え
3= メンバーの作成 4= メンバーの置き換え 5= メンバーへの追加
権限 . . . . *LIBCRTAUT *LIBCRTAUT, *CHANGE, *ALL
*EXCLUDE, *USE 権限リスト名:
テキスト . . . .
F3= 終了 F5= 最新表示 F12= 取り消し
5. 結果を受け取るデータベース・ファイルの名前を指定してください。
データベース名が指定されたら、次の例のように対話式 SQL 処理を開始できます。
SQL ステートメントの入力 SQL ステートメントを入力して、実行キーを押してください。
現在の接続相手はリレーショナル・データベース KC000 である。
CONNECT TO KC105_______________________________________________________
現在の接続相手はリレーショナル・データベース KC105 である。
===>SELECT * FROM INVENTORY___________________________________________
WHERE PART = ’1234567’_________________________________________________
_______________________________________________________________________
_______________________________________________________________________
_______________________________________________________________________
_______________________________________________________________________
_______________________________________________________________________
_______________________________________________________________________
_______________________________________________________________________
_______________________________________________________________________
_______________________________________________________________________
_______________________________________________________________________
_______________________________________________________________________
_______________________________________________________________________
終わり
F3= 終了 F4= プロンプト F6= 行の挿入 F9= コマンドの複写 F10= 行のコピー F12= 取り消し F13=サービス F24= キーの続き
関連概念:
SQL プログラミング 関連資料:
SQL リファレンス
DB2 for i Query 管理機能の機能を使用したリモート・システムの Query:
リモート・システムに照会して、出力ファイルの中の結果をローカル・システムに戻す場合には、DB2 for i Query 管理機能の機能は、対話式 SQL とほとんど同じサポートを提供します。
対話式 SQL と Query 管理機能は、両方ともファイルまたはテーブルに関する
INSERT、DELETE、SELECT などのデータ処理操作を実行することができ、そのためにテーブル (または ファイル) がコレクションの中にすでに存在している (ライブラリーの中に存在することができる) ことを 必要としません。また、Query 管理機能では、新しいテーブルが照会の結果としてシステム上に作成される 時には、 SQL CREATE TABLE ステートメントを使用してデータ定義を提供します。Query 管理機能によ って作成される表は、 SQL を使用して作成される表に適用されるものと同じ指針および制約条件に従いま す。
ただし、Query 管理機能を使用する場合には、結果をファイルまたはテーブルに追加したい時に、メンバー を指定することはできません。 Query 管理機能を使用した場合の結果は、 データベース・ファイルの一時
変更 (OVRDBF) コマンドを使用して、Query 管理機能を開始する前に別のメンバーを指定しない限り、最初
のファイル・メンバーに入れられることになります。
関連概念:
Query 管理プログラミング (PDF) 関連資料:
データベース・ファイルによるオーバーライド (OVRDBF) コマンド テープ相互間でのファイルのコピー:
テープ相互間でファイルをコピーするために使用できるコマンドが、いくつかあります。
IBM i オペレーティング・システムの テープにコピー (CPYTOTAP) コマンドを使用すると、テープにテ ーブルまたはファイルをコピーできます。
テープ上のデータは、テープからのコピー (CPYFRMTAP) コマンドを使用して、別のシステムにロードで きます。このコマンドの使用法の詳細については、ストレージ・ソリューションのトピックを参照してくだ さい。
さらに、ファイルのコピー (CPYF)コマンドを使用して、テープ上のデータを DB2 for i にロードできま す。これは、DB2 for z/OS または DB2 Server for VM (SQL/DS) からアンロードされたデータをロードす るときに特に便利です。これらのシステムからヌル値可能データをアンロードして、ヌル値可能フィールド に単一バイト・フラグを関連付けることができます。CPYF コマンドの FMTOPT パラメーターで
*NULLFLAGS オプションが指定されていると、ヌル・フラグが識別されて、テープの隣接するフィールド
のデータを無視します。そして DB2 for i のフィールドをヌルにします。IBM メインフレームからデータ をインポートする際に役立つもう 1 つの FMTOPT パラメーター値は、 *CVTFLOAT 値です。これは、
z/OS 形式でテープ上に保管されている浮動小数点データを、DB2 for i で使用されている IEEE 形式に変 換することを可能にします。
関連概念:
ストレージ・ソリューション 関連資料:
テープにコピー (CPYTOTAP) コマンド テープからコピー (CPYFRMTAP) コマンド ファイル・コピー (CPYF) コマンド
ファイル・コピー・コマンドを使用したシステム間のデータの移動:
IBM i オペレーティング・システム相互間でデータを移動する他の方法としては、ファイル・コマンドを
DDM とともに使用して、データをコピーする方法があります。
ファイルのコピー (CPYF)、ソース・ファイルのコピー (CPYSRCF)、および照会ファイルからのコピー
(CPYFRMQRYF) コマンドを使用して、クライアントとサーバーのファイル相互間でデータをコピーするこ
とができます。リモート・データベース・ファイルとの間でローカル・リレーショナル・データベース・フ ァイルまたは装置ファイルをコピーすることができ、リモート・ファイルをリモート・ファイルへコピーす ることもできます。
たとえば、ある販売店が閉業した場合には、分散リレーショナル・データベース管理担当者は、リモート・
システムから地域のローカル・システムへ得意先テーブルおよび在庫テーブルをコピーすることができま す。管理担当者は、これらのテーブルをアクセスおよびコピーするために、適正に許可されたユーザー・プ ロファイルをサーバー上で必要とし、コピーする各テーブルまたは各ファイルごとに、 DDM ファイルを クライアント上に作成しなければなりません。次の例には、SPIFFY と呼ばれるコレクションの中の INVENT と呼ばれるテーブルを、 KC105 というリモート・ロケーション名を持つシステムから、 KC000 と呼ばれる地域中央システムへコピーする場合に、データベース管理担当者が使用するコマンドが示してあ ります。KC000 クライアント上の TEST と呼ばれるライブラリーの中の INCOPY と呼ばれる DDM ファ イルが、ファイル・アクセス用として使用されます。これらのコマンドは KC000 システム上で実行されま す。
CRTDDMF FILE(TEST/INCOPY) RMTFILE(SPIFFY/INVENT) RMTLOCNAME(KC105)
CPYF FROMFILE(TEST/INCOPY) TOFILE(TEST/INVENTDDM) MBROPT(*ADD)
この例では、管理担当者は KC000 システム側でコマンドを実行します。管理担当者が KC000 システム側 にいない場合には、パススルーを使用して、KC000 システムでこれらのコマンドを実行しなければなりま せん。SBMRMTCMD (リモート・コマンド投入) コマンドを使用して前述のコマンドを実行することはで きません。IBM i オペレーティング・システムが、同一のジョブに関して、クライアントおよびサーバー になることはできないからです。
このコマンドを DDM で使用するにあたっては、次の事項を考慮してください。
v DDM ファイルは、ファイルのコピー (CPYF) コマンドおよびソース・ファイルのコピー (CPYSRCF) コマンドでは、FROMFILE パラメーターおよび TOFILE パラメーターで指定することができます。
注: 照会ファイルからのコピー (CPYFRMQRYF) およびテープからのコピー (CPYFRMTAP) コマンドで は、DDM ファイル名は、 TOFILE パラメーターでしか指定することができません。また、テープへの コピー (CPYTOTAP) コマンドでは、 DDM ファイル名を指定できるのは FROMFILE パラメーターだ けです。
v 削除可能ファイルを削除不能ファイルにコピーする時には、 COMPRESS(*YES) を指定しなければなり ません。そうしないと、エラー・メッセージが送られて、ジョブが終了します。
v DDM ファイル上のリモート・ファイル名にメンバー名を指定する場合には、ファイルのコピー (CPYF) コマンドでそのファイルに指定されるメンバー名は、 DDM ファイル上のリモート・ファイル名のメン バー名と同じでなければなりません。さらに、データベース・ファイルの一時変更 (OVRDBF) コマンド では、DDM ファイル上のリモート・ファイル名のメンバー名と異なるメンバー名を指定することはでき ません。
v DDM ファイルがメンバー名を指定せず、データベース・ファイルの一時変更 (OVRDBF) コマンドでそ のファイルのメンバー名を指定した場合には、ファイルのコピー (CPYF) コマンドでは、OVRDBF コマ ンドで指定したメンバー名を使用します。
v TOFILE パラメーターが存在していないファイルを参照する DDM ファイルである場合には、 CPYF で そのファイルを作成します。ファイルのコピー (CPYF) コマンドで作成したリモート・ファイルについ ては、以下の特別な考慮事項に留意してください。