xls でのデータ登録 (replace-schema) を tsv に変更する手順
DB の初期値登録に xls を使用していたのだが、チーム開発において
- 差分が見れないのでレビューし辛い (github でやってます)
- 衝突してもマージできない
というのが問題になってきた。
ので、 xls から tsv での運用に切り替える事に。
ざっくり概要(ようは一旦 xls => DB => tsv して、以降 tsv => DB にする)
DB から tsv への出力を行える LoadDataReverse という機能を使い
xls => DB => tsv を行い、 xls => DB の部分を tsv => DB にする。
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 (蔵元: 近畿のデータ)
その他
ラージテキストの登録などをしている場合、変換後の値が出力されているので注意。
(パスも変わってるはずなのでその辺も)