ExcelからOracleを更新できれば大助かり:Excel‐Oracle連携(3)(4/4 ページ)
企業の部門内に蓄積された大量のExcelデータをデータベースで管理したい。あるいは、Excelで作成した業務書類からシステムに手作業でデータ入力する工数を削減したい。このようなニーズに応えるべく、OracleデータベースにはExcelからOracleへのさまざまな連携機能が備わっている。(編集部)
KeySQLのマクロを使用する方法
検索の場合と同じように、KeySQLの画面から「ファイル」→「マクロファイルに保存」を選択して、Excelで実行可能なVBAマクロを生成することができます(図6)。更新を行うマクロを作成する場合は、「作成方法」内の設定を図6のように選択します。
図6のように指定すると、Excelから直接実行可能な、更新処理を行うVBAのプロシージャ(リスト6)と宣言部が生成されます。宣言部はExcelマクロの標準モジュールとして入力してください。リスト6のマクロでは、Book1のSheet1上の10〜20行目までを更新することになります。図7の「更新系マクロ作成のオプション」で、「更新」ではなく「追加」や「削除」を選択した場合は、リスト6のKeySQLUpdateファンクションが追加や削除のファンクションに置き換わったプロシージャが生成されます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
このように更新処理についてもGUI操作で簡単にマクロを生成できますが、これらのマクロを使用するにはデータベースへの接続処理などが必要になります。その際、oo4oなどを使用した通常のマクロとは違い、更新対象の表から検索を行ったのと同じ接続を使う必要があります。従って、検索をしてから更新するまでの間はデータベースに接続したままの状態にしておくか、あるいは更新を行う際は内部的に検索処理も行うようにするかのどちらかの方法を取ることになります。ただ、データベースへの接続、検索に関してもKeySQLで自動生成できるため、手作業でコーディングする部分はほとんどありません。
KeySQLの誤操作対策
このように、ExcelからOracleデータベースのデータを更新することは簡単に行えますが、その分操作ミスにより誤った変更処理がなされてしまう可能性もあります。KeySQLでは、そのような非常事態にOracleデータベースの表を過去の状態に戻すことが可能です。図8のように表を右クリックすると「フラッシュバックテーブル」というメニューがあります。
このメニューを選択すると、図9のようなダイアログが開くので、どの時点に戻すかを指定すると、表の中身が指定した時点でのデータに戻ります。
一度に大量のデータを変更してしまった場合など、手作業で元のデータに戻すことが困難な場合でも、この機能を使えば簡単にデータを復旧させることができます。
ただし、この操作を行うと、表の中身はすべて指定した時点のものになります。特定の行だけを過去の状態に戻す、ということはこの機能ではできません。また、この機能はOracleデータベースの機能であり、実際にはデータベースのUNDO表領域内に存在する過去のデータを使用するため、UNDO表領域にデータが残っていない場合には、過去の状態に戻すことができません。どの時点までデータを戻すことができるかは、初期化パラメータ「UNDO_RETENTION」の値とUNDO表領域のサイズに依存します。また、Oracleデータベースのバージョンが10.1以上、かつEnterprise Editionである必要がありますので注意してください。
まとめ
本連載では、第1回でExcelデータをOracleデータベースにロードする方法、第2回でExcelからOracleデータベースを検索する方法、そして最終回である今回は更新する方法について紹介してきました。いまやOracleデータベースを利用するアプリケーションといえば、Java言語によるWebアプリケーションが一般的かもしれませんが、ExcelあるいはAccessとOracleデータベースを連携させたい、というユーザーも多いです。本連載が、そういったことを検討されている皆さまのお役に立ったなら幸いです。(連載完)
Copyright © ITmedia, Inc. All Rights Reserved.