37. 37
増分ロード
挿入のみ (更新または削除なし) 2/2
例:
Let BeginningThisExecTime = Now();
明細データ:
SQL SELECT X, Y, Z FROM 明細DB
WHERE 更新日時 >= #$(LastExecTime)#
AND 更新日時 < #$(BeginningThisExecTime)#;
Concatenate LOAD X, Y, Z FROM 明細.QVD;
STORE 明細データ INTO 明細.QVD;
Let LastExecTime = BeginningThisExecTime;
SQL WHERE 句の#記号は日付の開始と終了を定義します。ご使用中の
データベースの適正な日付構文に合わせてください。
1. リロード開始時間を変数に設定
2. データベースから、変数の最終リロード時間以降で、
リロード開始時間より前の更新日時を持つレコードの
みロード
3. QVDをConcatenateでロードしてマージ
4. マージ後のテーブルをQVDに格納
5. リロード開始時間を最終リロード時間の変数に設定
39. 39
増分ロード
挿入および更新 2/2
例:
Let BeginningThisExecTime = Now();
明細データ:
SQL SELECT PrimaryKey, X, Y FROM 明細DB
WHERE 更新日時 >= #$(LastExecTime)#
AND更新日時 < #$(BeginningThisExecTime)#;
Concatenate LOAD PrimaryKey, X, Y FROM 明細.QVD
WHERE NOT Exists(PrimaryKey);
STORE 明細データ INTO 明細.QVD;
Let LastExecTime = BeginningThisExecTime;
SQL WHERE 句の#記号は日付の開始と終了を定義します。ご使用中の
データベースの適正な日付構文に合わせてください。
1. リロード開始時間を変数に設定
2. データベースから、変数の最終リロード時間以降で、
リロード開始時間より前の更新日時を持つレコードの
みロード
3. データベースにプライマリーキーが存在しないレコードの
みQVDからConcatenateでロードしてマージ
4. マージ後のテーブルをQVDに格納
5. リロード開始時間を最終リロード時間の変数に設定
41. 41
増分ロード
挿入、更新、および削除 2/2
例:
Let BeginningThisExecTime = Now();
明細データ:
SQL SELECT PrimaryKey, X, Y FROM 明細DB
WHERE 更新日時 >= #$(LastExecTime)#
AND更新日時 < #$(BeginningThisExecTime)#;
Concatenate LOAD PrimaryKey, X, Y FROM 明細.QVD
WHERE NOT Exists(PrimaryKey);
Inner Join SQL SELECT PrimaryKey FROM 明細DB;
If ScriptErrorCount = 0 then
STORE 明細データ INTO 明細.QVD;
Let LastExecTime = BeginningThisExecTime;
End If
1. リロード開始時間を変数に設定
2. データベースから、変数の最終リロード時間以降で、
リロード開始時間より前の更新日時を持つレコードの
みロード
3. データベースにプライマリーキーが存在しないレコードの
みQVDからConcatenateでロードしてマージ
4. マージ後のテーブルにデータベースのプライマリーキーを
Inner Joinすることで、データベースに存在しないデ
レコードをテーブルから排除
5. テーブルをQVDに格納
6. リロード開始時間を最終リロード時間の変数に設定