diff --git a/ecs/jskult-batch-monthly/src/batch/jskult_batch_monthly.py b/ecs/jskult-batch-monthly/src/batch/jskult_batch_monthly.py index b4caefe1..fe9b46ee 100644 --- a/ecs/jskult-batch-monthly/src/batch/jskult_batch_monthly.py +++ b/ecs/jskult-batch-monthly/src/batch/jskult_batch_monthly.py @@ -11,246 +11,267 @@ import boto3 logger = get_logger('実消化&アルトマーク月次バッチ') +# WKテーブルの過去分削除SQL +PHYSICAL_NORMAL_DELETE_QUERY = """\ + DELETE FROM src05.wk_inst_aris_if +""" -class JskultBathcMonthly(): - """ 実消化&アルトマーク月次バッチ """ +# 正常系データを取得しWKテーブルに保存SQL +NORMAL_INSERT_SELECT_QUERY = """\ + INSERT src05.wk_inst_aris_if + SELECT + TRIM(' ' FROM TRIM(' ' FROM SUBSTRING(ci.dcf_dsf_inst_cd,3))) AS dcf_inst_cd + ,TRIM(' ' FROM TRIM(' ' FROM SUBSTR(ci.form_inst_name_kanji,1,50))) AS inst_name_form + ,TRIM(' ' FROM TRIM(' ' FROM SUBSTR(ci.inst_name_kanji,1,10))) AS inst_name + ,TRIM(' ' FROM TRIM(' ' FROM SUBSTR(ci.form_inst_name_kana,1,80))) AS inst_name_kana_form + ,TRIM(' ' FROM TRIM(' ' FROM ci.prefc_cd)) AS pref_cd + ,TRIM(' ' FROM TRIM(' ' FROM SUBSTR(cp.prefc_name,1,8))) AS pref_name + ,TRIM(' ' FROM TRIM(' ' FROM ci.postal_number)) AS postal_cd + ,TRIM(' ' FROM TRIM(' ' FROM cc.city_name)) AS city_name + ,TRIM(' ' FROM TRIM(' ' FROM ci.inst_addr)) AS address + ,TRIM(' ' FROM TRIM(' ' FROM cd.inst_div_name)) + ,TRIM(' ' FROM TRIM(' ' FROM ci.inst_phone_number)) AS phone_no + ,TRIM(' ' FROM TRIM(' ' FROM ci.inst_div_cd)) + ,TRIM(' ' FROM TRIM(' ' FROM ci.manage_cd)) + ,DATE_FORMAT(ci.sys_update_date,'%y%m%d') AS update_date + ,DATE_FORMAT(ci.abolish_ymd,'%y%m%d') AS delete_date + ,sysdate() + FROM src05.com_inst ci + LEFT JOIN src05.mst_prefc cp + ON ci.prefc_cd = cp.prefc_cd + LEFT JOIN src05.mst_city cc + ON ci.prefc_cd = cc.prefc_cd + AND ci.city_cd = cc.city_cd + LEFT OUTER JOIN src05.com_inst_div cd + ON ci.inst_div_cd = cd.inst_div_cd + WHERE ci.dcf_dsf_inst_cd NOT LIKE '%9999999%' + AND ci.dcf_dsf_inst_cd IS NOT NULL + AND ci.form_inst_name_kanji IS NOT NULL + AND ci.prefc_cd IS NOT NULL + AND cp.prefc_name IS NOT NULL + AND cc.city_name IS NOT NULL + AND ci.inst_addr IS NOT NULL + ORDER BY ci.dcf_dsf_inst_cd +""" - # WKテーブルの過去分削除SQL - PHYSICAL_NORMAL_DELETE_QUERY = """\ - DELETE FROM src05.wk_inst_aris_if - """ +# 正常系データの件数を取得SQL +NORMAL_COUNT_QUERY = """\ + SELECT COUNT(*) AS countNum FROM src05.wk_inst_aris_if +""" - # 正常系データを取得しWKテーブルに保存SQL - NORMAL_INSERT_SELECT_QUERY = """\ - INSERT src05.wk_inst_aris_if +# 異常系WKテーブルの過去分削除SQL +PHYSICAL_ABNORMAL_DELETE_QUERY = """\ + DELETE FROM src05.wk_inst_aris_if_wrn +""" + +# 異常系データを取得しWKテーブルに保存SQL +ABNORMAL_INSERT_SELECT_QUERY = """\ + INSERT src05.wk_inst_aris_if_wrn SELECT - TRIM(' ' FROM TRIM(' ' FROM SUBSTRING(ci.dcf_dsf_inst_cd,3))) AS dcf_inst_cd - ,TRIM(' ' FROM TRIM(' ' FROM SUBSTR(ci.form_inst_name_kanji,1,50))) AS inst_name_form - ,TRIM(' ' FROM TRIM(' ' FROM SUBSTR(ci.inst_name_kanji,1,10))) AS inst_name - ,TRIM(' ' FROM TRIM(' ' FROM SUBSTR(ci.form_inst_name_kana,1,80))) AS inst_name_kana_form - ,TRIM(' ' FROM TRIM(' ' FROM ci.prefc_cd)) AS pref_cd - ,TRIM(' ' FROM TRIM(' ' FROM SUBSTR(cp.prefc_name,1,8))) AS pref_name - ,TRIM(' ' FROM TRIM(' ' FROM ci.postal_number)) AS postal_cd - ,TRIM(' ' FROM TRIM(' ' FROM cc.city_name)) AS city_name - ,TRIM(' ' FROM TRIM(' ' FROM ci.inst_addr)) AS address - ,TRIM(' ' FROM TRIM(' ' FROM cd.inst_div_name)) - ,TRIM(' ' FROM TRIM(' ' FROM ci.inst_phone_number)) AS phone_no - ,TRIM(' ' FROM TRIM(' ' FROM ci.inst_div_cd)) - ,TRIM(' ' FROM TRIM(' ' FROM ci.manage_cd)) - ,DATE_FORMAT(ci.sys_update_date,'%y%m%d') AS update_date - ,DATE_FORMAT(ci.abolish_ymd,'%y%m%d') AS delete_date - ,sysdate() + TRIM(' ' FROM TRIM(' ' FROM SUBSTRING(ci.dcf_dsf_inst_cd,3))) AS dcf_inst_cd + ,TRIM(' ' FROM TRIM(' ' from SUBSTR(ci.form_inst_name_kanji,1,50))) AS inst_name_form + ,TRIM(' ' FROM TRIM(' ' from SUBSTR(ci.inst_name_kanji,1,10))) AS inst_name + ,TRIM(' ' FROM TRIM(' ' from SUBSTR(ci.form_inst_name_kana,1,80))) AS inst_name_kana_form + ,TRIM(' ' FROM TRIM(' ' from ci.prefc_cd)) AS pref_cd + ,TRIM(' ' FROM TRIM(' ' from SUBSTR(cp.prefc_name,1,8))) AS pref_name + ,TRIM(' ' FROM TRIM(' ' from ci.postal_number)) AS postal_cd + ,TRIM(' ' FROM TRIM(' ' from cc.city_name)) AS city_name + ,TRIM(' ' FROM TRIM(' ' from ci.inst_addr)) AS address + ,TRIM(' ' FROM TRIM(' ' from cd.inst_div_name)) + ,TRIM(' ' FROM TRIM(' ' from ci.inst_phone_number)) AS phone_no + ,TRIM(' ' FROM TRIM(' ' from ci.inst_div_cd)) + ,TRIM(' ' FROM TRIM(' ' from ci.manage_cd)) + ,DATE_FORMAT(ci.sys_update_date,'%y%m%d') AS update_date + ,DATE_FORMAT(ci.abolish_ymd,'%y%m%d') AS delete_date + ,IF(ci.dcf_dsf_inst_cd IS NULL,'bi0402000001', NULL) AS wrnid_dcf_inst_cd + ,IF(ci.form_inst_name_kanji IS NULL,'bi0402000002', NULL) AS wrnid_inst_name_form + ,IF(ci.prefc_cd IS NULL,'bi0402000003', NULL) AS wrnid_pref_cd + ,IF(cp.prefc_name IS NULL,'bi0402000004', NULL) AS wrnid_pref_name + ,IF(cc.city_name IS NULL,'bi0402000005', NULL) AS wrnid_city_name + ,IF(ci.inst_addr IS NULL,'bi0402000006', NULL) AS wrnid_address + ,sysdate() FROM src05.com_inst ci LEFT JOIN src05.mst_prefc cp - ON ci.prefc_cd = cp.prefc_cd + ON ci.prefc_cd = cp.prefc_cd LEFT JOIN src05.mst_city cc - ON ci.prefc_cd = cc.prefc_cd - AND ci.city_cd = cc.city_cd + ON ci.prefc_cd = cc.prefc_cd + AND ci.city_cd = cc.city_cd LEFT OUTER JOIN src05.com_inst_div cd - ON ci.inst_div_cd = cd.inst_div_cd + ON ci.inst_div_cd = cd.inst_div_cd WHERE ci.dcf_dsf_inst_cd NOT LIKE '%9999999%' - AND ci.dcf_dsf_inst_cd IS NOT NULL - AND ci.form_inst_name_kanji IS NOT NULL - AND ci.prefc_cd IS NOT NULL - AND cp.prefc_name IS NOT NULL - AND cc.city_name IS NOT NULL - AND ci.inst_addr IS NOT NULL + AND( ci.dcf_dsf_inst_cd IS NULL + OR ci.form_inst_name_kanji IS NULL + OR ci.prefc_cd IS NULL + OR cp.prefc_name IS NULL + OR cc.city_name IS NULL + OR ci.inst_addr IS NULL) ORDER BY ci.dcf_dsf_inst_cd - """ +""" - # 正常系データの件数を取得SQL - NORMAL_COUNT_QUERY = """\ - SELECT COUNT(*) AS countNum FROM src05.wk_inst_aris_if - """ +# 正常系データの件数を取得SQL +ABNORMAL_COUNT_QUERY = """\ + SELECT COUNT(*) AS countNum FROM src05.wk_inst_aris_if_wrn +""" +# CSVファイルの作成用のSQL +SELECT_QUERY = """\ + SELECT dcf_inst_cd, inst_name_form, inst_name, inst_name_kana_form, pref_cd, pref_name, + postal_cd, city_name, address, inst_div_name, phone_no, inst_div_cd, manage_cd, + '', inst_delete_date + FROM src05.wk_inst_aris_if ORDER BY dcf_inst_cd +""" - # 異常系WKテーブルの過去分削除SQL - PHYSICAL_ABNORMAL_DELETE_QUERY = """\ - DELETE FROM src05.wk_inst_aris_if_wrn - """ - - # 異常系データを取得しWKテーブルに保存SQL - ABNORMAL_INSERT_SELECT_QUERY = """\ - INSERT src05.wk_inst_aris_if_wrn - SELECT - TRIM(' ' FROM TRIM(' ' FROM SUBSTRING(ci.dcf_dsf_inst_cd,3))) AS dcf_inst_cd - ,TRIM(' ' FROM TRIM(' ' from SUBSTR(ci.form_inst_name_kanji,1,50))) AS inst_name_form - ,TRIM(' ' FROM TRIM(' ' from SUBSTR(ci.inst_name_kanji,1,10))) AS inst_name - ,TRIM(' ' FROM TRIM(' ' from SUBSTR(ci.form_inst_name_kana,1,80))) AS inst_name_kana_form - ,TRIM(' ' FROM TRIM(' ' from ci.prefc_cd)) AS pref_cd - ,TRIM(' ' FROM TRIM(' ' from SUBSTR(cp.prefc_name,1,8))) AS pref_name - ,TRIM(' ' FROM TRIM(' ' from ci.postal_number)) AS postal_cd - ,TRIM(' ' FROM TRIM(' ' from cc.city_name)) AS city_name - ,TRIM(' ' FROM TRIM(' ' from ci.inst_addr)) AS address - ,TRIM(' ' FROM TRIM(' ' from cd.inst_div_name)) - ,TRIM(' ' FROM TRIM(' ' from ci.inst_phone_number)) AS phone_no - ,TRIM(' ' FROM TRIM(' ' from ci.inst_div_cd)) - ,TRIM(' ' FROM TRIM(' ' from ci.manage_cd)) - ,DATE_FORMAT(ci.sys_update_date,'%y%m%d') AS update_date - ,DATE_FORMAT(ci.abolish_ymd,'%y%m%d') AS delete_date - ,IF(ci.dcf_dsf_inst_cd IS NULL,'bi0402000001', NULL) AS wrnid_dcf_inst_cd - ,IF(ci.form_inst_name_kanji IS NULL,'bi0402000002', NULL) AS wrnid_inst_name_form - ,IF(ci.prefc_cd IS NULL,'bi0402000003', NULL) AS wrnid_pref_cd - ,IF(cp.prefc_name IS NULL,'bi0402000004', NULL) AS wrnid_pref_name - ,IF(cc.city_name IS NULL,'bi0402000005', NULL) AS wrnid_city_name - ,IF(ci.inst_addr IS NULL,'bi0402000006', NULL) AS wrnid_address - ,sysdate() - FROM src05.com_inst ci - LEFT JOIN src05.mst_prefc cp - ON ci.prefc_cd = cp.prefc_cd - LEFT JOIN src05.mst_city cc - ON ci.prefc_cd = cc.prefc_cd - AND ci.city_cd = cc.city_cd - LEFT OUTER JOIN src05.com_inst_div cd - ON ci.inst_div_cd = cd.inst_div_cd - WHERE ci.dcf_dsf_inst_cd NOT LIKE '%9999999%' - AND( ci.dcf_dsf_inst_cd IS NULL - OR ci.form_inst_name_kanji IS NULL - OR ci.prefc_cd IS NULL - OR cp.prefc_name IS NULL - OR cc.city_name IS NULL - OR ci.inst_addr IS NULL) - ORDER BY ci.dcf_dsf_inst_cd - """ - - # 正常系データの件数を取得SQL - ABNORMAL_COUNT_QUERY = """\ - SELECT COUNT(*) AS countNum FROM src05.wk_inst_aris_if_wrn - """ - # CSVファイルの作成用のSQL - SELECT_QUERY = """\ - SELECT dcf_inst_cd, inst_name_form, inst_name, inst_name_kana_form, pref_cd, pref_name, - postal_cd, city_name, address, inst_div_name, phone_no, inst_div_cd, manage_cd, - '', inst_delete_date - FROM src05.wk_inst_aris_if ORDER BY dcf_inst_cd - """ - - aris_log = '/var/log/temporarydwh/' - move_file_path = '/data/mountaris/DATA/' - create_date = datetime.now().strftime('%Y%m%d%H%M%S') - create_date_format = datetime.now().strftime('%Y-%m-%d %H:%M:%S') - aris_create_csv = f'D0004_ARIS_M_DCF_{create_date}.csv' - res_log = f'D0004{create_date}.log' - prg_id = 'PrgId:BI0402' - head_str = 'TC_HOSPITAL, TJ_HOSPITAL, TJ_HOSPITALSHORT, TK_HOSPITAL, \ - TC_PREFECTURE, TJ_PREFECTURE, TJ_ZIPCODE, TJ_CITY, TJ_ADDRESS, TJ_DEPARTMENT, \ - TJ_TELEPHONENUMBER, TC_HOSPITALCAT, TC_HOSPITALTYPE, TS_UPDATE, TD_UPDATE' - - start_msg = "MsgID:BI0000000001 Message:バッチ処理を開始しました。\n" - err_end_msg = "MsgID:BI0000009998 Message:バッチ処理を異常終了しました。\n" - csv_err_msg = "MsgID:BI0000000040 Message:ワークデータの作成に失敗しました。\n" - cnt_msg = "MsgID: Message: LogText:" - - def exec_batch_monthly(self): - """ 実消化&アルトマーク月次バッチ """ - try: - # 実行ログに書き込む - resLog = make_log_data(self) - resLog_f = resLog[0] - log_file_path = resLog[1] - resLog_f.write(f'{self.create_date_format}[DWH][3][INFO]{self.prg_id} {self.start_msg}') - - db = Database.get_instance() - # DB接続 - db.connect() - # トランザクションの開始 - db.begin() - - # 正常系データの反映 - # 過去分は不要のため、デリート - db.execute(self.PHYSICAL_NORMAL_DELETE_QUERY) - - # 正常系データを取得しWKテーブルに保存する。 - db.execute(self.NORMAL_INSERT_SELECT_QUERY) - - # 正常系データの件数を取得 - record_count = db.execute_select(self.NORMAL_COUNT_QUERY) - suc_count = record_count[0]['countNum'] - - # 警告系データの反映 - # 過去分は不要のため、DWH.WK_INST_ARIS_IF_WRNをデリートする。 - db.execute(self.PHYSICAL_ABNORMAL_DELETE_QUERY) - - # 異常系データを取得しWKテーブルに保存する。 - db.execute(self.ABNORMAL_INSERT_SELECT_QUERY) - - # 異常系データの件数を取得 - record_count = db.execute_select(self.ABNORMAL_COUNT_QUERY) - wrn_count = record_count[0]['countNum'] - - # CSVファイルの作成用のSQL実行 - record_csv = db.execute_select(self.SELECT_QUERY) - - # CSVファイル作成 - csv_file_path = make_csv_data(self, record_csv) - - # テスト用に出力している(あとで消す) - logger.info(log_file_path) - logger.info(csv_file_path) - - # トランザクションの終了 - db.commit() - - # 実行ログファイルの追記 - # 実行ログに処理件数を書き込む。 - sum_count = suc_count + wrn_count - resLog_f.write(f'{self.create_date_format}[DWH][3][INFO]{self.prg_id} {self.cnt_msg}(対象件数:{sum_count}/正常件数:{suc_count}/警告件数:{wrn_count})\n') - - # 実行ログファイルクローズ - resLog_f.close() - - # ファイル移動処理 - s3_upload_data(self, csv_file_path, log_file_path) - - logger.info('実消化&アルトマーク月次バッチ処理: 終了') - except Exception as e: - resLog_f.write(f'{self.create_date_format}[DWH][5][INFO]{e.message}') - raise BatchOperationException(e) - - finally: - # 終了時に必ずコミットする - db.commit() - db.disconnect() - return +create_date = datetime.now().strftime('%Y%m%d%H%M%S') +create_date_format = datetime.now().strftime('%Y-%m-%d %H:%M:%S') +aris_create_csv = f'D0004_ARIS_M_DCF_{create_date}.csv' +res_log = f'D0004{create_date}.log' +prg_id = 'PrgId:BI0402' +head_str = 'TC_HOSPITAL,TJ_HOSPITAL,TJ_HOSPITALSHORT,TK_HOSPITAL,TC_PREFECTURE,TJ_PREFECTURE,TJ_ZIPCODE,TJ_CITY,TJ_ADDRESS,\ +TJ_DEPARTMENT,TJ_TELEPHONENUMBER,TC_HOSPITALCAT,TC_HOSPITALTYPE,TS_UPDATE, TD_UPDATE' +start_msg = "MsgID:BI0000000001 Message:バッチ処理を開始しました。" +err_end_msg = "MsgID:BI0000009998 Message:バッチ処理を異常終了しました。" +csv_err_msg = "MsgID:BI0000000040 Message:ワークデータの作成に失敗しました。" +cnt_msg = "MsgID: Message: LogText:" +move_err_msg = "MsgID:BI0000000041 Message:S3バケットARISへのCSVデータ、実行ログ移動できませんでした。" -def make_csv_data(self, record_csv: list): +def exec(): + """ 実消化&アルトマーク月次バッチ """ + try: + # 実行ログに書き込む + resLog = make_log_data() + resLog_f = resLog[0] + log_file_path = resLog[1] + resLog_f.write(f'{create_date_format}[DWH][3][INFO]{prg_id} {start_msg}\n') + logger.info(f'{create_date_format}[DWH][3][INFO]{prg_id} {start_msg}') + + db = Database.get_instance() + # DB接続 + db.connect() + # トランザクションの開始 + db.begin() + + # 正常系データの反映 + # 過去分は不要のため、デリート + db.execute(PHYSICAL_NORMAL_DELETE_QUERY) + + # 正常系データを取得しWKテーブルに保存する。 + db.execute(NORMAL_INSERT_SELECT_QUERY) + + # 正常系データの件数を取得 + record_count = db.execute_select(NORMAL_COUNT_QUERY) + suc_count = record_count[0]['countNum'] + + # 警告系データの反映 + # 過去分は不要のため、DWH.WK_INST_ARIS_IF_WRNをデリートする。 + db.execute(PHYSICAL_ABNORMAL_DELETE_QUERY) + + # 異常系データを取得しWKテーブルに保存する。 + db.execute(ABNORMAL_INSERT_SELECT_QUERY) + + # 異常系データの件数を取得 + record_count = db.execute_select(ABNORMAL_COUNT_QUERY) + wrn_count = record_count[0]['countNum'] + + # CSVファイルの作成用のSQL実行 + record_csv = db.execute_select(SELECT_QUERY) + + # CSVファイル作成 + csv_file_path = make_csv_data(record_csv, resLog_f) + + # トランザクションの終了 + db.commit() + + # 実行ログファイルの追記 + # 実行ログに処理件数を書き込む。 + sum_count = suc_count + wrn_count + resLog_f.write(f'{create_date_format}[DWH][3][INFO]{prg_id} {cnt_msg}(対象件数:{sum_count}/正常件数:{suc_count}/警告件数:{wrn_count})\n') + logger.info(f'{create_date_format}[DWH][3][INFO]{prg_id} {cnt_msg}(対象件数:{sum_count}/正常件数:{suc_count}/警告件数:{wrn_count})') + + # CSVファイル移動処理 + s3_csv_upload_data(csv_file_path, resLog_f) + + # 実行ログファイルクローズ + resLog_f.close() + + # logファイル移動処理 + s3_log_upload_data(log_file_path) + + logger.info('実消化&アルトマーク月次バッチ処理: 終了') + except Exception as e: + logger.info(f'{create_date_format}[DWH][5][INFO]{e.message}') + raise BatchOperationException(e) + + finally: + # 終了時に必ずコミットする + db.commit() + db.disconnect() + + +def make_csv_data(record_csv: list, resLog_f): # 一時ファイルとして保存する(CSVファイル) - temporary_dir = tempfile.mkdtemp() - csv_file_path = path.join(temporary_dir, self.aris_create_csv) + try: - # ヘッダ行書き込み - fp = open(csv_file_path, mode='w') - fp.write(f'{self.head_str}\n') + temporary_dir = tempfile.mkdtemp() + csv_file_path = path.join(temporary_dir, aris_create_csv) - # データ部分書き込み - for record_data in record_csv: - record_value = list(record_data.values()) - csv_data = ",".join(map(str, record_value)) - fp.write(f'{csv_data}\n') + # ヘッダ行書き込み + fp = open(csv_file_path, mode='w') + fp.write(f'{head_str}\n') + + # データ部分書き込み + for record_data in record_csv: + record_value = list(record_data.values()) + csv_data = ",".join(map(str, record_value)) + fp.write(f'{csv_data}\n') + + # ファイルクローズ + fp.close() + except Exception as e: + resLog_f.write(f'{create_date_format}[DWH][5][INFO]{prg_id} {csv_err_msg}\n') + resLog_f.write(f'{create_date_format}[DWH][5][INFO]{prg_id} {err_end_msg}\n') + logger.info(f'{create_date_format}[DWH][5][INFO]{prg_id} {csv_err_msg}') + logger.info(f'{create_date_format}[DWH][5][INFO]{prg_id} {err_end_msg}') + raise e - # ファイルクローズ - fp.close() return csv_file_path -def make_log_data(self): +def make_log_data(): # 一時ファイルとして保存する(ログファイル) temporary_dir = tempfile.mkdtemp() - log_file_path = path.join(temporary_dir, self.res_log) + log_file_path = path.join(temporary_dir, res_log) fp = open(log_file_path, mode='w') return fp, log_file_path -def s3_upload_data(self, csv_file_path, log_file_path): +def s3_csv_upload_data(csv_file_path, resLog_f): # s3にログファイルとCSVファイルをUPする - Bucket = os.environ['ARISJ_DATA_BUCKET'] folder = os.environ['ARISJ_DATA_FOLDER'] - csv_file_name = f'{folder}/{self.aris_create_csv}' - log_file_name = f'{folder}/{self.res_log}' - + csv_file_name = f'{folder}/{aris_create_csv}' s3_client = boto3.client('s3') - s3_client.upload_file(csv_file_path, Bucket, csv_file_name) - s3_client.upload_file(csv_file_path, Bucket, log_file_name) + + try: + s3_client.upload_file(csv_file_path, Bucket, csv_file_name) + except Exception as e: + resLog_f.write(f'{create_date_format}[DWH][5][INFO]{prg_id} {move_err_msg}\n') + logger.info(f'{create_date_format}[DWH][5][INFO]{prg_id} {move_err_msg}') + raise e + + return + + +def s3_log_upload_data(log_file_path): + # s3にログファイルとCSVファイルをUPする + Bucket = os.environ['ARISJ_DATA_BUCKET'] + folder = os.environ['ARISJ_DATA_FOLDER'] + log_file_name = f'{folder}/{res_log}' + s3_client = boto3.client('s3') + + try: + s3_client.upload_file(log_file_path, Bucket, log_file_name) + except Exception as e: + logger.info(f'{create_date_format}[DWH][5][INFO]{prg_id} {move_err_msg}') + raise e return diff --git a/ecs/jskult-batch-monthly/src/jobctrl_monthly.py b/ecs/jskult-batch-monthly/src/jobctrl_monthly.py index 3a1e8d68..fdb7d0c1 100644 --- a/ecs/jskult-batch-monthly/src/jobctrl_monthly.py +++ b/ecs/jskult-batch-monthly/src/jobctrl_monthly.py @@ -9,7 +9,7 @@ from src.batch.common.calendar_file import CalendarFile from src.error.exceptions import BatchOperationException from src.logging.get_logger import get_logger from src.system_var import constants -from src.batch.jskult_batch_monthly import JskultBathcMonthly +from src.batch import jskult_batch_monthly logger = get_logger('月次処理コントロール') @@ -30,12 +30,12 @@ def exec(): # 月次バッチ処理中の場合、後続の処理は行わない if batch_processing_flag == constants.BATCH_ACTF_BATCH_IN_PROCESSING: logger.error('バッチ処理中のため、月次バッチ処理を終了します。') - # 戻すんだよ return constants.BATCH_EXIT_CODE_SUCCESS + return constants.BATCH_EXIT_CODE_SUCCESS # dump取得が正常終了していない場合、後続の処理は行わない if dump_status_kbn != constants.DUMP_STATUS_KBN_COMPLETE: logger.error('dump取得が正常終了していないため、月次バッチ処理を終了します。') - # 戻すんだよ return constants.BATCH_EXIT_CODE_SUCCESS + return constants.BATCH_EXIT_CODE_SUCCESS logger.info(f'処理日={syor_date}') # バッチ共通設定に処理日を追加 @@ -62,8 +62,7 @@ def exec(): try: logger.info('月次バッチ:起動') - BathcMonthly = JskultBathcMonthly() - BathcMonthly.exec_batch_monthly() + jskult_batch_monthly.exec() logger.info('月次バッチ:終了') except BatchOperationException as e: logger.exception(f'月次バッチ処理エラー(異常終了){e}')