データベース

16. 重複したレコードを削除するには?

ある順次ファイルに全く同じデータが紛れ込んでしまってどのレコードが重複しているのかも
不明な状況に陥ったとする。
仮にその重複レコードを含んでいるファイルがライブラリー MYLIBDBFILE という
名前であったとする。
重複したレコードを除去する方法を紹介しよう。

1. 元のファイルと同じ空のファイルを作成する。

CRTDUPOBJ DBFILE MYLIB *FILE TOLIB(MYLIB)
    NEWOBJ(WRKFILE) DATA(*NO)

によってライブラリー MYLIBWRKFILE という名前の空のファイルを作成する。

2. SQL によって重複しないレコードだけを WRKFILE に作成する。

INSERT INTO MYLIB/WRKFILE
    SELECT DISTINCT * FROM MYLIB/DBFILE

3. 元のDBFILE へ WRKFILE のデータをすべてコピーする。

CPYF FROMFILE(MYLIB/WRKFILE) TOFILE(MYLIB/DBFILE)
    MBROPT(*REPLACE)

もちろんこれらの作業は十分に BACKUP をとっておいてから行うべきであるのは言うまでもない。