データ登録制御 (loadingControl)

処理概要

ReplaceSchemaのデータ登録の処理を制御(微調整)するプロパティがあります。データファイルと同じディレクトリに loadingControlMap.dataprop という名前のテキストファイルを配置して、 それぞれのプロパティを定義します。@since 0.9.8.4

例えば、以下のような制御ができます。

loggingInsertType
登録データのロギング調整 (ALL, PART, NONE)
isSuppressBatchUpdate
バッチ更新の抑制
isSuppressColumnDefCheck
カラム定義のDB上存在チェックの抑制
dateAdjustmentMap
日付データの調整

使い方

データファイルと同じディレクトリに loadingControlMap.dataprop という名前のテキストファイルを配置して、 それぞれのプロパティを定義します。

e.g. データ登録の制御のプロパティ設定 @loadingControlMap.dataprop
map:{
    # ALL, NONE, PART
    ; loggingInsertType = PART

    # true or false
    ; isSuppressBatchUpdate = false

    # true or false
    ; isCheckColumnDefExistence = true

    # dateAdjustmentMap = map:{
    #     ; df:originDate = 2013/03/09
    #     ; $$ALL$$ = map:{
    #         ; $$ALL$$ = addDay($distance)
    #     }
    #     ; MEMBER = map:{ BIRTHDATE = addDay(0) }
    # }
    ; dateAdjustmentMap = map:{
        ; df:originDate = 2008/01/01
        ; $$ALL$$ = map:{
            ; $$ALL$$ = addDay($distance)
            ; FORMALIZED_DATETIME = addDay(0)
            ; LOGIN_DATETIME = addDay(0)
        }
        ; MEMBER = map:{ BIRTHDATE = addDay(0) }
        ; MEMBER_ADDRESS = map:{ $$ALL$$ = addDay(0) }
        ; WHITE_XLS_MAN = map:{ $$ALL$$ = addDay(0) }
    }
}
設定ファイル
loadingControlMap.dataprop (UTF-8)
プロパティ
個別個別のプロパティ

loggingInsertType

登録データのログ出力のタイプを指定します。

ALL
全てのデータを出力する
NONE
全てのデータを出力しない
PART
一部のデータを出力する (最初の 10 件)

大量のデータを登録する場合は、ReplaceSchema が少しでも早く終わるようにするために、ログ出力されるデータを少なくするか、全くなくすかを検討すると良いでしょう。

ただし、エラー発生したときは、エラー発生箇所の特定にログは欠かせません。 エラーが発生したときに登録されたデータのログを見たい場合は、 このプロパティを(一時的に)元に戻してから再度実行してログを確認することをお奨めします。

デフォルトの値は、replaceSchemaDefinitionMap.dfprop の isLoggingInsertSql の値に依存します。そのプロパティのデフォルト(セットアップデフォルトも含む)は true なので、DBFluteをセットアップしてから何も変更していなければ ALL と同じ挙動になっています。

isSuppressBatchUpdate

バッチ更新をせず都度登録をするか否かを指定します。

データ登録エラーが発生したときにエラー発生レコードを特定するために、利用するとよいでしょう。 ただし、エクセルデータであれば、このプロパティを利用しなくても自動リトライ処理によってエラー発生レコードを特定しやすいはずです。

バッチ更新なしの自動リトライ

デフォルトの値は、replaceSchemaDefinitionMap.dfprop の isSuppressBatchUpdate の値に依存します。そのプロパティのデフォルト(セットアップデフォルトも含む)は false なので、DBFluteをセットアップしてから何も変更していなければバッチ更新されます。

isSuppressColumnDefCheck

データファイルのカラム定義の、DB上存在チェックを抑制するか否かを指定します。@since 1.0.4A

デフォルトでは、エクセルデータやTSVデータなどのカラム定義で、DB上に存在しないカラムがある場合はエラーとなります(@since 1.0.4A)。 そのチェックを抑制して、不要なカラムを紛れ込ませたい場合に利用します。

isRTrimCellValue

データを右トリムするか否かを指定します。@since 1.0.5F

1.0.5F以降において、デフォルトではエクセルデータはそのまま登録されます。右トリムしたいときは、明示的にこの設定をすることで右トリムできます。

dateAdjustmentMap

エクセルやTSV上の日付データに対する相対的な日付調整を指定します。@since 1.0.4A

例えば、とあるカラムの日付データを一律 7 日進めてDBに登録する、というようなことができます。 また、全てのカラムの日付データと一律調整というようなこともできます。どのカラムをどのように調整するか、細かく設定できます。

e.g. 会員の生年月日に 7 日を足して登録する @loadingControlMap.dataprop
map:{
    ...
    ; dateAdjustmentMap = map:{
        ; MEMBER = map:{ BIRTHDATE = addDay(7) }
    }
}
e.g. 全てのテーブルの全ての日付カラムに 7 日を足して登録する @loadingControlMap.dataprop
map:{
    ...
    ; dateAdjustmentMap = map:{
        ; $$ALL$$ = map:{ $$ALL$$ = addDay(7) }
    }
}
e.g. 基準日(originDate)を2008年1月1日にして、全てのカラム移動 @loadingControlMap.dataprop
map:{
    ...
    ; dateAdjustmentMap = map:{
        ; df:originDate = 2008/01/01
        ; $$ALL$$ = map:{ $$ALL$$ = addDay($distance) }
    }
}