DB2を使ったシステムでテストをする際に作成した簡単なシェルスクリプトを作成しました。内容としてはCSVで用意したテスト用のデータをテーブルにインポートしたり実行結果をチェックするのにテーブルのデータを出力して確認するのに使いました。テストデータをテストする毎に1つずつ手動でインポートしたり結果を1つずつエクスポートするのは手間だし工数の無駄だと感じたので。テストで不具合があって再テストする際にもシェルでさくっとやればいいだけなので嫌な顔しなくて済むわけです。

インポートのシェルスクリプト

#!/usr/bin/bash
echo `db2 connect to owner` >> $0".log"
echo `db2 IMPORT FROM CSV_DATA.csv OF DEL INSERT INTO TEST_TABLE` >> $0".log"
echo `db2 IMPORT FROM CSV_DATA2.csv OF DEL INSERT INTO TEST_TABLE2` >> $0".log"
echo `db2 terminate` >> $0".log"

DB2に接続し、CSVファイルをテーブルにインポート。DB2から切断するというのが流れ。とても簡単。インポートの確認として「シェル名.log」の名前でログをファイルに書き込むようにしているので実行後にインポートSQLのエラーやインポートできなかった行が無いかを確認します。エラーメッセージも出力されるので修正の参考に。インポートするCSVファイルは同じディレクトリに置いて実行していますが必要に応じて変更してください。ログも同じディレクトリに出しているのでテスト用のフォルダでも切ってテストが終わったらディレクトリごと消してしまえばいいかと。DB2接続部分も必要に応じてusingを使用してユーザーとパスワードを指定してください。他システムからCSVでIFのしたのを取り込むバッチとかにも応用可能。

エクスポートのシェルスクリプト

#!/usr/bin/bash
echo `db2 connect to owner` >> $0".log"
echo `db2 export to ExportData.csv of DEL "SELECT * FROM TEST_TABLE"` >> $0".log"
echo `db2 export to ExportData2.csv of DEL "SELECT * FROM TEST_TABLE2"` >> $0".log"
echo `db2 terminate` >> $0".log"

エクスポートのシェルはインポートと同じ要領です。抽出用SQLで取れるデータをCSVで出力します。テスト対象のプログラム実行前と実行後にそれぞれCSVファイルをエクスポートしてDIFFで差分比較して結果をだすのが楽ですね。

テストデータを削除するシェルスクリプト

#!/usr/bin/bash
echo `db2 connect to owner` >> $0".log"
echo `db2 "DELETE FROM TEST_TABLE WHERE MEMO = 'TestData'"` >> $0".log"
echo `db2 "DELETE FROM TEST_TABLE2 WHERE MEMO = 'TestData'"` >> $0".log"
echo `db2 commit` >> $0".log"
echo `db2 terminate` >> $0".log"
わざわざ載せるほどのものでは全く無いのですがテストデータ作成時に汎用カラムや作成者みたいな項目にテストデータと分かるようにデータを作成しておけばテスト後のテストデータ削除もワンタッチです。この3点セットを用意してテストすれば順番に実行するだけで入社したばかりの新入社員でもできます。