HTML版テーブル定義書のボタンは、主にテストデータを手軽に作成することを目的とした機能ですが、僕(作者)が具体的にどうやって使っているのかを、ご紹介したいと思います。
※ボタンで大量のINSERT文やDELETE文を手軽に生成して、効率よく対象システムのテストするのが目的です。
利点としては
- 既存データとの重複を気にせずテストデータが登録できる。
- 重複した既存データのバックアップ / リストアを容易に行うことができる。
- 対象データの SELECT文 <> INSERT文 <> DELETE文 の生成(切替)が 1クリックで行える。
というところでしょうか。
これにより、テスト作業が捗る(はかどる)ようになりました。
それでは以下、具体的な操作を細かく記載しますのでご覧ください。
テーブル定義書サンプル の M0001 に A5、Excelを併用してテストデータを登録し、テストデータの利用後に元に戻すところまでの操作になります。
詳細操作
- テストデータの作成
- 作業用ファイル(Excel)作成
まずは作業用Excelを開きます
- 作業用Excelの調整
全セルの書式を”文字列”にします。
※これやらないと、データ貼り付けた時に「000100」が前0削除されて「100」とかになっちゃうので - テストデータ編集 (目的のキー、データパターンに編集する)
登録したいテストデータをExcel上で作成します。
※PK項目がExcel上で重複しないように編集!
- 作業用ファイル(Excel)作成
- テストデータ登録
- 作業シートのデータをコピー
登録したいデータのセルを選択してコピー(Ctrl+C)します。
- コピーデータ(Excel)をHTML版テーブル定義書へ貼り付け
欄の入力テキスト欄(“INPUT”)に貼り付け (SQL文:デフォルトINSERT+DELETE文が生成されますが、この時点では、このSQLは使いません)
- 既存データ確認用SELECT文の生成
「SEL」ボタン
※ になっていること。 - SELECT文コピー
ボタンでクリップボードへコピー (右上に「Copy To Clipboard」が表示されます)
- A5にSELECT文を貼り付けて実行
※「既存データが3件存在した」として進めます。 - 既存データバックアップ
A5から作業用Excelシートへバックアップ(コピー)します。
※件数が多い場合は別シートすると吉かも。 - 登録用INSERT文生成
「INS」を選択してINSERT+DELETE文を生成します。
※になっていること。 - INSERT(+DELETE)文コピー
- A5にINSERT文(+DELETE)を貼り付けて実行
※既存の3件もろとも削除してから登録されますが、利用後にバックアップよりリストアするので問題ないです。 - 再度SELECT文の実行 (登録データ確認)
「SEL」ボタンで生成して ボタン
- A5で実行
※登録データが表示される。 - ★登録データのコミット★
※登録完了です。目的のテストデータを使った作業を実施できる状態です。以降は、利用後の後片付けの操作になります。
- 作業シートのデータをコピー
- テストデータ削除
- DELETE文の生成
HTML版テーブル定義書で「DEL」を選択してDELETE文を生成し、A5で実行します。
※件数が少ない場合はこの方法で問題ないですが、数百件、数千件レベルであれば、WHERE句で対象を指定した DELETE文 を別途作った方がいいかと思います。
DELETE FROM M0001 WHERE ORG_CD like 'A%';
- データ確認用SELECT文
- SELECT文の実行
テストデータがすべて削除されているかチェック。
- ★コミット★
- DELETE文の生成
- バックアップデータリストア
- バックアップデータコピー
作業用シートのバックアップセルを選択し、コピーします。
- リストア用INSERT文の生成
HTML版テーブル定義書にコピーしたバックアップExcelデータを貼り付けて、リストア用INSERT (+DELETE)文を生成します。
※バックアップExcelデータを貼り付ける前にのところにある「×」ボタン、あるいはボタンで、以前の操作で入力したテキストをクリアすのを忘れずに。 - リストア用INSERT文の実行
でクリップボードにコピーしたリストア用SQLをA5に貼り付けて実行。
- リストアデータ確認用SELECT文
「SEL」を選択してリストアデータのSELECT文を生成。
- SELECT文の実行
バックアップデータがすべてリストアされたかチェック。
- ★コミット★
- バックアップデータコピー
以上が操作になります。何となくイメージできましたでしょうか。
細かな操作はお好みで変更すればいいかと思います。
PCスペックや対象テーブルのレコード長にもよりますが、1度に生成(実施)するSQL文は多くても3000件~5000件くらいが無難でしょうか。大量のデータで上記のような操作をするとブラウザの各操作が重くなったり(いちいち処理が動いてしまう..要改善)、エラー(メモリ不足)になったり。SQL生成できても実行時に何かしらエラーが起きそうな感覚があります。(なんとなくです。明確な根拠はないんですが。。。)
僕(作者)は、数万件レベルのデータを登録する場合は、3000~5000件ずつの SQL生成&実行 を目安にしています。ご参考まで。
※一応レスポンスを考慮したロジックにはしていますが、数千件レベルになると、SQL生成に時間がかかります(ブラウザが固まったかと思ったりするかも…10秒、20秒、30秒かかったりもすることも…)。ご注意ください。