xls でのデータ登録 (replace-schema) を tsv に変更する手順

DB  の初期値登録に xls を使用していたのだが、チーム開発において

  • 差分が見れないのでレビューし辛い (github でやってます)
  • 衝突してもマージできない

というのが問題になってきた。

ので、 xls から tsv での運用に切り替える事に。

データ登録(エクセル) | DBFlute

 

ざっくり概要(ようは一旦 xls => DB => tsv して、以降 tsv => DB にする)

DB から tsv への出力を行える LoadDataReverse という機能を使い

xls => DB => tsv を行い、 xls => DB の部分を tsv => DB にする。

LoadDataReverse | DBFlute 

 

DB => tsv するための設定

LoadDataReverse はそのままだと DB => xls に出力されるので、

この機能の設定ファイルである documentMap.dfprop を編集して全テーブル tsv に出力する。 

map:{
...
loadDataReverseMap: {
...
; isReplaceSchemaDirectUse = false # common 配下の xls で定義しているテーブルも出力対象にする。つまり全テーブル対象にする。
; xlsLimit = 0 # 通常は xls 出力でこの値を超えると tsv 出力になる。つまり全件 tsv にする。
}
...
}

 

tsv を作成する

manager.bat => 0: replace-schema  # 一応 xls => DB で最新にして

manager.bat => 4: load-data-reverse # DB => tsv

で、以下のようなファイルがわらわらと作成されるのでこれを xls 代わりに使う。

...
.../dbflute_xxdb/output/doc/data/big-data/cyclic_01_1_CLS_MAIL_TEMPLATE_GROUP.tsv
.../dbflute_xxdb/output/doc/data/big-data/cyclic_01_2_CLS_MAIL_TEMPLATE_TYPE.tsv
.../dbflute_xxdb/output/doc/data/big-data/cyclic_02_1_MAIL_TEMPLATE.tsv
...

 

元の xls に成り代わるようファイル名を加工して配置する

作成した tsv を plysql/data/ 以下へ適切に配置し、xls は削除。

replace-schema してテストケース流してなどで変更後の確認して終わり。

# ファイル名加工後の tsv を配置する
...
.../dbflute_xxdb/playsql/data/common/tsv/UTF-8/000100-cls_liquor.tsv
.../dbflute_xxdb/playsql/data/common/tsv/UTF-8/000200-cls_koji.tsv
...
.../dbflute_xxdb/playsql/data/ut/tsv/UTF-8/000100-brewery.tsv
.../dbflute_xxdb/playsql/data/ut/tsv/UTF-8/000130-kanpyokai.tsv
.../dbflute_xxdb/playsql/data/ut/tsv/UTF-8/000200-brand.tsv
...

tsv の場合、テーブル名=ファイル名になり、prefix に番号を指定することで読み込み順を制御。

FK と関連性を考慮してファイル名を整理していく。

 

(余談)tsv ファイル名のルール化

xls と違いグループ化は出来ないので、

まとまりをもって管理するには、数字だけで色々と工夫する必要がある。

今回考えたルールは、6桁での管理。

  • 000100-brewery.tsv (蔵元)
  • 000200-brand.tsv (銘柄)

 基本はこんな感じで、百の位でインクリメントして増やしていく。

000100~ 099900)

 

先頭の0だけは固定、

プロジェクト跨いで使いたいものがあった時よしなに0以外を使う。

 

グループ化は無いので 000100 ~ 0003000 までは "蔵元の情報" 、

0006000 ~ 0009000 までは "お店の情報" のように適当に区切っていく。

 

エンハンスをしていく事で、新規テーブルを間に入れたくなったら十の位を使う。

  • 000100-brewery.tsv (蔵元)
  • 000130-kanpyokai.tsv (鑑評会)
  • 000200-brand.tsv (銘柄)

 

同じテーブルだが、入れるデータによってファイルを分けたい場合は一の位を使う。

  • 000100-brewery.tsv (蔵元: 東北・北海道のデータ)
  • 000101-brewery.tsv (蔵元: 関東のデータ)
  • 000102-brewery.tsv (蔵元: 近畿のデータ)

  

その他

ラージテキストの登録などをしている場合、変換後の値が出力されているので注意。

(パスも変わってるはずなのでその辺も)

データ登録 (LoadData) | DBFlute