0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

IBM i (旧AS400)の自己学習メモ コマンド/ツール/運用 CPYFでテーブルデータのバックアップなど

Posted at

自己学習メモインデックス

IBM i (旧AS400)の自己学習メモ インデックス

概要

Oracleであっても、AS400のDB2 for iであっても、RDBMSとして利用している場合、システムのリリースやテーブル定義変更などのタイミングで、テーブルのデータをバックアップしておきたいケースがあります。
そんな時に便利なのがCPYFコマンドです。

CPYFコマンドでバックアップ

CPYFと入力してF4キーを押下し、Copy File画面を表示します。
Copy File画面で以下のようにパラメータを入力し、Enterを押下することで、From file→To fileにコピーすることが可能です。

項目 設定 備考
From file MTOKISKP コピー元のファイル名を指定する。
ここでは例としてMTOKISKPを指定しています。
Library YAMAGUCHI1 コピー元のファイルが格納されているライブラリを指定します。
To file MTOKISKP@1 コピーのファイル名を指定する。
ここでは例としてMTOKISKP@1を指定しています。
AS400の制限上、ファイル名は10文字までとなっているため、MTOKISKP_20210101などと指定することができないので、簡易的に名前を指定しています。
Library YAMAGUCHI1 コピーのファイルを格納するライブラリを指定します。
コピー元のファイルとは別のライブラリ(例えばYAMABKLIBなどのバックアップ用のライブラリ)を指定することも可能です。
Replace or add records *replace *replaceはコピー先のライブラリ内にすでに同じ名前のファイルが存在した場合、上書き保存する指定です。
Create file *yes コピー先のライブラリ内にファイルが存在しない場合、新規でファイルを作成するか?というオプションです。
*yesと指定した場合、ファイルが存在しない場合は作成してくれます。
ファイルが存在しない場合に、*noだとCPYFコマンドがエラーとなります。

スクリーンショット 2021-01-01 13.30.39.png

コマンドで実行する場合は以下のような感じになります。

CPYF FROMFILE(YAMAGUCHI1/MTOKISKP) TOFILE(YAMAGUCHI1/MTOKISKP@1) MBROPT(*REPLACE) CRTFILE(*YES)                                                           

CPYFコマンドの実行が完了すると、以下のようにファイルが作成されていることが確認できます。
(strpdm -> 2 -> Library=YAMAGUCHI1 , Type=*FILE でWork with Objects Using PDM画面へ遷移)
スクリーンショット 2021-01-01 13.31.54.png

バックアップしたファイルのテキストを変更

バックアップは完了しましたが、MTOKISKP@1というファイル名だけでは、これが何を表すものなのか、いまいちよくわかりません。(時間が経てば経つほど記憶が薄れていくものです。)
なので、Work with Objects Using PDM画面から、バックアップしたファイルのテキストをメンテナンスします。

Opt=13を指定してEnter
スクリーンショット 2021-01-01 13.37.33.png

Text Descriptionをメンテナンスする画面で、このファイルがどんな役割のものなのかを表すテキストを入力してEnter
スクリーンショット 2021-01-01 13.38.46.png

このように、テキストにこのファイルの説明を入れておくことで、後から見返した際に、どんなファイルなのかその役割を把握することが可能です。
スクリーンショット 2021-01-01 13.39.34.png

CPYFでコピーするデータを条件指定する

CPYFはバックアップをするためだけではなく、例えばテスト環境などへ本番環境のデータをコピーして動作確認を行う場合などにも有効です。
その場合、本番環境にある大量のデータをコピーすると、データベースのディスクサイズも圧迫しますし、コピーする時間も非常に掛かってしまいます。
そんな時に、CPYFでコピーするデータの条件を絞り込んでコピーすることが可能です。

CPYFコマンドの画面で、F10を押下することでオプションパラメータを設定することが可能となります。
オプションパラメータの画面でPageDownしていき、INCRELのパラメータ設定画面を表示し、次のように設定していきます。
ここでは、TOKRMT(得意先マスタの利用限度額項目)が、120万円を超えている得意先情報のみをコピーする。という条件を指定しています。

スクリーンショット 2021-01-01 13.48.52.png

コマンドだと以下のようなコマンドになります。

CPYF FROMFILE(YAMAGUCHI1/MTOKISKP) TOFILE(YAMAGUCHI1/MTOKISKP@1) MBROPT(*REPLACE) CRTFILE(*YES) INCREL((*IF TOKRMT *GT 1200000))

複数の条件を指定したい場合は、+for more values+を入力してEnterを押下すると、さらに条件を追加指定できます。
スクリーンショット 2021-01-01 13.51.54.png
スクリーンショット 2021-01-01 13.52.55.png

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?