2016-07-26 7 views
0

マージが完了する前にログファイルがいっぱいになっているという問題が発生しています。このマージを反復して一度に1000をマージしてコミットし、再び開始する方法はありますか?ここに私のMERGE文は次のとおりです。DB2 Merge Into Loop

MERGE INTO "SCHEMA"."PATIENT" AS DMT 
USING "SCHEMA"."PATIENT_STAGE" AS Stage 
ON (DMT.MEMBER_ID = Stage.MEMBER_ID) 
when matched then 
update set 
DMT.MEMBER_ID = Stage.MEMBER_ID, 
DMT.ADDRESS1 = Stage.ADDRESS1, 
DMT.ADDRESS2 = Stage.ADDRESS2, 
DMT.BENEFIT_ID = Stage.BENEFIT_ID, 
DMT.CITY = Stage.CITY, 
DMT.STATE = Stage.STATE, 
DMT.CLIENT_CLIENT_ID = Stage.CLIENT_CLIENT_ID, 
DMT.CLIENT_CUSTOMER_ID = Stage.CLIENT_CUSTOMER_ID, 
DMT.CLIENT_GROUP_ID = Stage.CLIENT_GROUP_ID, 
DMT.DATE_OF_BIRTH = Stage.DATE_OF_BIRTH, 
DMT.FIRST_NAME = Stage.FIRST_NAME, 
DMT.GENDER = Stage.GENDER, 
DMT.LAST_NAME = Stage.LAST_NAME, 
DMT.MIDDLE_NAME = Stage.MIDDLE_NAME, 
DMT.PERSON_CODE = Stage.PERSON_CODE, 
DMT.SSN = Stage.SSN, 
DMT.TPL_PAYOR = Stage.TPL_PAYOR, 
DMT.TPL_PRIM_NAME = Stage.TPL_PRIM_NAME, 
DMT.UPDATE_DATE = Stage.UPDATE_DATE; 
COMMIT; 
+0

ログは、どのようなメッセージでいっぱいですか? – danny117

+0

@ danny117 OPはトランザクションログを意味すると思います。 – mustaccio

+0

修正 - トランザクションログがいっぱいです。私はSSISで動作しているので、ロギングをオフにすることはできません。 –

答えて

0

これは私の問題を解決するために表示されます。

num=1 ; while ((num < 100000)) ; do 

MERGE INTO "SCHEMA"."PATIENT" AS DMT 
USING "SCHEMA"."PATIENT_STAGE" AS Stage 
update set 
DMT.MEMBER_ID = Stage.MEMBER_ID, 
DMT.ADDRESS1 = Stage.ADDRESS1, 
DMT.ADDRESS2 = Stage.ADDRESS2, 
DMT.BENEFIT_ID = Stage.BENEFIT_ID, 
DMT.CITY = Stage.CITY, 
DMT.STATE = Stage.STATE, 
DMT.CLIENT_CLIENT_ID = Stage.CLIENT_CLIENT_ID, 
DMT.CLIENT_CUSTOMER_ID = Stage.CLIENT_CUSTOMER_ID, 
DMT.CLIENT_GROUP_ID = Stage.CLIENT_GROUP_ID, 
DMT.DATE_OF_BIRTH = Stage.DATE_OF_BIRTH, 
DMT.FIRST_NAME = Stage.FIRST_NAME, 
DMT.GENDER = Stage.GENDER, 
DMT.LAST_NAME = Stage.LAST_NAME, 
DMT.MIDDLE_NAME = Stage.MIDDLE_NAME, 
DMT.PERSON_CODE = Stage.PERSON_CODE, 
DMT.SSN = Stage.SSN, 
DMT.TPL_PAYOR = Stage.TPL_PAYOR, 
DMT.TPL_PRIM_NAME = Stage.TPL_PRIM_NAME, 
DMT.UPDATE_DATE = Stage.UPDATE_DATE(select........where <> fetch 1st 1000 rows only) 
(num=num+1) 
done