ツール daria の重複チェックを考える(1)

Excel で記述したデータを Database テーブルにセットするツール daria
GitHub - yipuran/daria: Database data set Tool
で、実装していない機能がある。
それは、格納するデータの重複制限チェックである。
daria は、DBの対象テーブル構造をチェックするのだから、ついでに Primary Key もチェックすれば
いいじゃないかと検討していたが、daria は、1種類のDBだけをサポートするのではなく、
 Oracle
 MySQL
 PostgreSQL
 H2
等をサポートするコンセプトであるので、そこまでやると、UNIQUE Key のことも考えると
スキーマのテーブル情報を読んでチェックするのが正しいと解っていても躊躇してしまう。
それに、daria の実行オプションとして、TRUNCATE して書込み実行するのではなく、
単に、INSERT文をテキストファイル出力するだけの機能を使う場合は、既存に格納されたレコードと
一意制約チェックするとなると、面倒で躊躇していた。

指定する データ Excel の1行目ヘッダ行のカラム名記述を、Bold (太字)にすると一意のキーである。
という約束にすれば、複数列でのキーによる一意制約のチェックも簡単であるし、
何より、データ値を記述する際にマーカーとしてもすぐに判別できる。

Excel でセルが太字で記述されたかどうかは、Apache-POI では以下の戻り値が true である。

XSSFCell から、getCellStyle() で取得する org.apache.poi.xssf.usermodel.XSSFCellStyle から、
org.apache.poi.xssf.usermodel.XSSFFont を取得して、
更に、getBold() の結果が true なら 太字

近日中に実装しようかと考えてるが、
TRUNCATEしない実行では、既存のレコードとの重複チェックまで実行すると遅くなり、
Excelデータだけをチェックすることを標準にして、遅くなってもDB内との突合せチェックする為に、
完全チェックオプションを追加するしかないかもしれない。