データ登録(TSV)
TSVデータの登録
タブ区切りのテキストデータを登録します。
デリミタデータ
DBFluteでは、TSVやCSVなど区切り文字を問わずに表現する言葉として、TSVのような区切り文字のテキストデータを デリミタデータ と呼びます。さらに、そのテキストファイルを デリミタファイル と呼びます。
但し、ReplaceSchema においては、そもそも TSV と言うだけで、大抵は CSV も含みます。機能的に全く違いがなく、あまり区切り文字の違い意識する場面が少ないからです。 デリミタデータという言葉は、誤解されないために、抽象的であることを強調するのによく利用されます。
TSVファイルの配置
"[DBFluteクライアント]/playsql/data" 配下の "common/tsv" ディレクトリ、および、"[dataLoadingType]/tsv" 配下のTSVファイルが登録されます。
e.g. TSVファイルの配置(dataLoadingTypeはデフォルトの "ut") @playsql
dbflute_exampledb
|-playsql
|-data
|-common
| |-tsv
| |-...
|-ut
| |-tsv
| |-...
"common" は、どんな "dataLoadingType" であっても登録されます。よって、"common" 配下にはデータどの環境においても変わらない共通のマスタデータなどを配置すると良いでしょう。
TSVファイルのエンコーディング
"tsv" ディレクトリの "そのTSVファイルのエンコーディング名と同じ名前のディレクトリ" 配下の ".tsv" で終わるファイルをTSVファイルと認識します。そのディレクトリ名をそのままファイルを読み込むときのエンコーディングに利用します。
e.g. TSVファイルの配置(エンコーディングはUTF-8) @playsql
playsql
|-data
|-common
| |-tsv
| |-UTF-8
| |-xxx.tsv
|-ut
| |-tsv
| |-UTF-8
| |-xxx.tsv
TSVファイルのファイル名
TSVのファイル名は "番号-テーブル名.tsv" もしくは "テーブル名.tsv" という形式で配置します。ファイル名上のテーブル名をそのまま登録する先のテーブルとして扱います。
登録順序を確定させるために、番号で順序管理するのがお奨めです。
e.g. TSVファイルの配置: 会員系テーブルのUTF-8のTSVファイル @playsql
playsql
|-data
|-common
| |-tsv
| |-UTF-8
| |-10-MEMBER_STATUS.tsv
|-ut
| |-tsv
| |-UTF-8
| |-10-MEMBER.tsv
| |-20-MEMBER_LOGIN.tsv
TSVファイルのデータ仕様
- テーブル名
- ファイル名(先頭の番号と終わりの拡張子は除く)
- カラム定義
- テキストファイルの一行目(タブ区切り)
- データ定義
- テキストファイルの二行目以降(タブ区切り)
- データ形式の補足
-
- 改行を含む値は、必ずダブルクォーテーションで囲われていること ex. "ABC\nDEF"
- ダブルクォーテーションを含む値は、必ずダブルクォーテーションで囲われ、値としてのダブルクォーテーションがダブルクォーテーションでエスケープされていること ex. "ABC""DEF"
- 日付は "yyyy/MM/dd HH:mm:ss.SSS" 形式("-" 区切り可、ミリ秒・時分秒省略可)
- Time型は "HH:mm:ss" 形式
- 両端のダブルクォーテーションは、データとして扱わない(除去される)
- データはトリムされない(エクセルデータとは違うので注意)。但し、数値カラムや日付カラムなどで明らかにトリムをしても問題ない場合は、トリムされる
- 空文字の値は "null" として扱われる (変換して登録できるようにはできる)
- Boolean型のカラムは、"1"・"t"・"true"をtrue、"0"・"f"・"false"をfalseとして扱う
- バイナリデータはバイナリファイルへのパスを指定する {バイナリデータの登録}
- その他補足
-
- NotNull制約のないカラムは省略可能
- デフォルト制約のあるカラムは省略可能
- デフォルト設定(defaultValueMap.dataprop)のあるカラムは省略可能
- 存在しないカラムが定義されている場合は登録エラー @since 1.0.4A {オプションあり}
- 登録データは一レコードずつログに出力される {オプションあり}
- 登録時に定義されている値を別の値に変換して登録する機能あり
- 一つのファイルでのレコード数制限は特になし
- エクセルデータ登録と同様にバッチ更新で登録 {オプションあり} @since 0.9.7.5
値のコンバート設定(dataprop)
定義されている値をそのまま登録するのではなく、ある値にマッピングして登録することが可能です。