diff --git a/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_data_load_manager.py b/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_data_load_manager.py index af35a2aa..4b574dce 100644 --- a/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_data_load_manager.py +++ b/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_data_load_manager.py @@ -14,7 +14,7 @@ class JjskDataLoadManager: def _import_to_db(src_file_name: str, condkey: str): db = Database.get_instance() table_name_org = mapper.get_org_table(condkey) - table_name_src = mapper.get_src_table(condkey) + upsert_sql = mapper.get_upsert_sql(condkey) try: db.connect() # TODO:接続オプション local_infile = True が必要? @@ -24,13 +24,14 @@ class JjskDataLoadManager: db.execute(f"TRUNCATE TABLE {table_name_org};") # orgにload ※warningは1148エラーになるらしい - sql = f"LOAD DATA LOCAL INFILE :src_file_name INTO TABLE {table_name_org} FIELDS TERMINATED BY '\\t' ENCLOSED BY '\"' IGNORE 1 LINES;" + sql = f"LOAD DATA LOCAL INFILE :src_file_name INTO TABLE {table_name_org}" \ + " FIELDS TERMINATED BY '\\t' ENCLOSED BY '\"' IGNORE 1 LINES;" result = db.execute(sql, {"src_file_name": src_file_name}) logger.info(f'tsvデータをorgテーブルにLOAD : 件数({result.rowcount})') # org→srcにinsert select - # TODO: INTO句とSELECT句はmapperに持たせてcondkeyで引っ張ってくるようにしたい - f"INSERT INTO {table_name_src} SELECT * FROM {table_name_org};" + result = db.execute(upsert_sql) + logger.info(f'orgテーブルをsrcテーブルにUPSERT : 件数({result.rowcount})') db.commit() except Exception as e: # TODO:DB例外だけキャッチしたい @@ -46,13 +47,8 @@ class JjskDataLoadManager: logger.debug(f'JjskDataLoadManager#load start target:{target}') # target : {"condkey": key, "src_file_path":local_file_path} - # データファイルオープン + # S3からローカルストレージにdownloadした登録対象のtsvファイルパスを取得 local_file_name = target["src_file_path"] - # dat_file = VjskDatFile.retrieve_from_file(local_file_name) - - # TODO: tsvファイルをload投入用のDMLに加工(システム日時つけたり、エンコードをUTF-8に変換したり) - # TODO: ファイルエンコード判定の参考 https://zenn.dev/takedato/articles/c3a491546f8c58 - # TODO: エンコード変換の参考 https://dev.classmethod.jp/articles/python-encoding/ # データベース登録 self._import_to_db(local_file_name, target["condkey"]) diff --git a/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_importer.py b/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_importer.py index 7db2983e..8b4b5197 100644 --- a/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_importer.py +++ b/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_importer.py @@ -114,41 +114,41 @@ def _import_file_to_db(): if batch_context.is_import_target_vjsk_stockslipdata: JjskDataLoadManager.Load(target_dict[vjsk_mapper.CONDKEY_STOCK_SLIP_DATA]) - # # # ファイル存在確認 卸販売データ - # JjskDataLoadManager.Load(target_dict[vjsk_mapper.CONDKEY_SLIP_DATA]) + # DB登録 卸販売データ + JjskDataLoadManager.Load(target_dict[vjsk_mapper.CONDKEY_SLIP_DATA]) - # # # ファイル存在確認 卸組織変換マスタ - # JjskDataLoadManager.Load(target_dict[vjsk_mapper.CONDKEY_ORG_CNV_MST]) + # DB登録 卸組織変換マスタ + JjskDataLoadManager.Load(target_dict[vjsk_mapper.CONDKEY_ORG_CNV_MST]) - # # # ファイル存在確認 施設統合マスタ - # JjskDataLoadManager.Load(target_dict[vjsk_mapper.CONDKEY_VOP_HCO_MERGE]) + # DB登録 施設統合マスタ + JjskDataLoadManager.Load(target_dict[vjsk_mapper.CONDKEY_VOP_HCO_MERGE]) - # # # ファイル存在確認 卸マスタ - # JjskDataLoadManager.Load(target_dict[vjsk_mapper.CONDKEY_WHS_MST]) + # DB登録 卸マスタ + JjskDataLoadManager.Load(target_dict[vjsk_mapper.CONDKEY_WHS_MST]) - # # # ファイル存在確認 卸ホールディングスマスタ - # JjskDataLoadManager.Load(target_dict[vjsk_mapper.CONDKEY_HLD_MST]) + # DB登録 卸ホールディングスマスタ + JjskDataLoadManager.Load(target_dict[vjsk_mapper.CONDKEY_HLD_MST]) - # # # ファイル存在確認 施設マスタ - # JjskDataLoadManager.Load(target_dict[vjsk_mapper.CONDKEY_FCL_MST]) + # DB登録 施設マスタ + JjskDataLoadManager.Load(target_dict[vjsk_mapper.CONDKEY_FCL_MST]) - # # # ファイル存在確認 メーカー卸組織展開表 - # JjskDataLoadManager.Load(target_dict[vjsk_mapper.CONDKEY_MKR_ORG_HORIZON]) + # DB登録 メーカー卸組織展開表 + JjskDataLoadManager.Load(target_dict[vjsk_mapper.CONDKEY_MKR_ORG_HORIZON]) - # # # ファイル存在確認 取引区分マスタ - # JjskDataLoadManager.Load(target_dict[vjsk_mapper.CONDKEY_TRAN_KBN_MST]) + # DB登録 取引区分マスタ + JjskDataLoadManager.Load(target_dict[vjsk_mapper.CONDKEY_TRAN_KBN_MST]) - # # # ファイル存在確認 製品マスタ - # JjskDataLoadManager.Load(target_dict[vjsk_mapper.CONDKEY_PHM_PRD_MST]) + # DB登録 製品マスタ + JjskDataLoadManager.Load(target_dict[vjsk_mapper.CONDKEY_PHM_PRD_MST]) - # # # ファイル存在確認 製品価格マスタ - # JjskDataLoadManager.Load(target_dict[vjsk_mapper.CONDKEY_PHM_PRICE_MST]) + # DB登録 製品価格マスタ + JjskDataLoadManager.Load(target_dict[vjsk_mapper.CONDKEY_PHM_PRICE_MST]) - # # # ファイル存在確認 卸得意先情報マスタ - # JjskDataLoadManager.Load(target_dict[vjsk_mapper.CONDKEY_WHS_CUSTOMER_MST]) + # DB登録 卸得意先情報マスタ + JjskDataLoadManager.Load(target_dict[vjsk_mapper.CONDKEY_WHS_CUSTOMER_MST]) - # # # ファイル存在確認 MDBコード変換マスタ - # JjskDataLoadManager.Load(target_dict[vjsk_mapper.CONDKEY_MDB_CONV_MST]) + # DB登録 MDBコード変換マスタ + JjskDataLoadManager.Load(target_dict[vjsk_mapper.CONDKEY_MDB_CONV_MST]) _logger.debug('V実消化取込処理:終了') diff --git a/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py b/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py index 4aeea24f..a6736e16 100644 --- a/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_recv_file_mapper.py @@ -1,3 +1,6 @@ +import textwrap + + class VjskRecvFileMapper: CONDKEY_SLIP_DATA = "SLIP_DATA" # 販売実績データ CONDKEY_HLD_MST = "HLD_MST" # V卸ホールディングスマスタ @@ -19,13 +22,274 @@ class VjskRecvFileMapper: _KEY_FILE_SUFFIX = "file_suffix" _KEY_ORG_TABLE = "org_table" _KEY_SRC_TABLE = "src_table" + _KEY_UPSERT_SQL = "upsert_sql" _VJSK_INTERFACE_MAPPING = { # 販売実績データ CONDKEY_SLIP_DATA: { _KEY_FILE_PREFIX: "slip_data_", _KEY_FILE_SUFFIX: ".tsv", _KEY_ORG_TABLE: "org05.sales", - _KEY_SRC_TABLE: "src05.sales" + _KEY_SRC_TABLE: "src05.sales", + _KEY_UPSERT_SQL: textwrap.dedent("""\ + INSERT INTO src05.sales ( + REC_DATA + ,REC_WHS_CD + ,REC_WHS_SUB_CD + ,REC_WHS_ORG_CD + ,REC_CUST_CD + ,REC_COMM_CD + ,REC_TRAN_KBN + ,REV_HSDNYMD_WRK + ,REV_HSDNYMD_SRK + ,REC_URAG_NUM + ,REC_QTY + ,REC_NONYU_PRICE + ,REC_NONYU_AMT + ,REC_COMM_NAME + ,REC_NONYU_FCL_NAME + ,FREE_ITEM + ,REC_NONYU_FCL_ADDR + ,REC_NONYU_FCL_POST + ,REC_NONYU_FCL_TEL + ,REC_BEF_HSDN_YMD + ,REC_BEF_SLIP_NUM + ,REC_YMD + ,SALE_DATA_CAT + ,SLIP_FILE_NAME + ,SLIP_MGT_NUM + ,ROW_NUM + ,HSDN_YMD + ,EXEC_DT + ,V_TRAN_CD + ,TRAN_KBN_NAME + ,WHS_ORG_CD + ,V_WHSORG_CD + ,WHS_ORG_NAME + ,WHS_ORG_KN + ,V_WHS_CD + ,WHS_NAME + ,NONYU_FCL_CD + ,V_INST_CD + ,V_INST_KN + ,V_INST_NAME + ,V_INST_ADDR + ,COMM_CD + ,COMM_NAME + ,NONYU_QTY + ,NONYU_PRICE + ,NONYU_AMT + ,SHIKIRI_PRICE + ,SHIKIRI_AMT + ,NHI_PRICE + ,NHI_AMT + ,WHSPOS_ERR_KBN + ,HTDNYMD_ERR_KBN + ,PRD_EXIS_KBN + ,FCL_EXIS_KBN + ,BEF_HSDN_YMD + ,BEF_SLIP_NUM + ,SLIP_ORG_KBN + ,ERR_FLG1 + ,ERR_FLG2 + ,ERR_FLG3 + ,ERR_FLG4 + ,ERR_FLG5 + ,ERR_FLG6 + ,ERR_FLG7 + ,ERR_FLG8 + ,ERR_FLG9 + ,ERR_FLG10 + ,ERR_FLG11 + ,ERR_FLG12 + ,ERR_FLG13 + ,ERR_FLG14 + ,ERR_FLG15 + ,ERR_FLG16 + ,ERR_FLG17 + ,ERR_FLG18 + ,ERR_FLG19 + ,ERR_FLG20 + ,KJYO_YM + ,TKSNBK_KBN + ,FCL_EXEC_KBN + ,REC_STS_KBN + ,INS_DT + ,INS_USR + ,DWH_UPD_DT + ) + SELECT + t.REC_DATA + ,t.REC_WHS_CD + ,t.REC_WHS_SUB_CD + ,t.REC_WHS_ORG_CD + ,t.REC_CUST_CD + ,t.REC_COMM_CD + ,t.REC_TRAN_KBN + ,t.REV_HSDNYMD_WRK + ,t.REV_HSDNYMD_SRK + ,t.REC_URAG_NUM + ,t.REC_QTY + ,t.REC_NONYU_PRICE + ,t.REC_NONYU_AMT + ,t.REC_COMM_NAME + ,t.REC_NONYU_FCL_NAME + ,t.FREE_ITEM + ,t.REC_NONYU_FCL_ADDR + ,t.REC_NONYU_FCL_POST + ,t.REC_NONYU_FCL_TEL + ,t.REC_BEF_HSDN_YMD + ,t.REC_BEF_SLIP_NUM + ,t.REC_YMD + ,t.SALE_DATA_CAT + ,t.SLIP_FILE_NAME + ,t.SLIP_MGT_NUM + ,t.ROW_NUM + ,t.HSDN_YMD + ,t.EXEC_DT + ,t.V_TRAN_CD + ,t.TRAN_KBN_NAME + ,t.WHS_ORG_CD + ,t.V_WHSORG_CD + ,t.WHS_ORG_NAME + ,t.WHS_ORG_KN + ,t.V_WHS_CD + ,t.WHS_NAME + ,t.NONYU_FCL_CD + ,t.V_INST_CD + ,t.V_INST_KN + ,t.V_INST_NAME + ,t.V_INST_ADDR + ,t.COMM_CD + ,t.COMM_NAME + ,t.NONYU_QTY + ,t.NONYU_PRICE + ,t.NONYU_AMT + ,t.SHIKIRI_PRICE + ,t.SHIKIRI_AMT + ,t.NHI_PRICE + ,t.NHI_AMT + ,t.WHSPOS_ERR_KBN + ,t.HTDNYMD_ERR_KBN + ,t.PRD_EXIS_KBN + ,t.FCL_EXIS_KBN + ,t.BEF_HSDN_YMD + ,t.BEF_SLIP_NUM + ,t.SLIP_ORG_KBN + ,t.ERR_FLG1 + ,t.ERR_FLG2 + ,t.ERR_FLG3 + ,t.ERR_FLG4 + ,t.ERR_FLG5 + ,t.ERR_FLG6 + ,t.ERR_FLG7 + ,t.ERR_FLG8 + ,t.ERR_FLG9 + ,t.ERR_FLG10 + ,t.ERR_FLG11 + ,t.ERR_FLG12 + ,t.ERR_FLG13 + ,t.ERR_FLG14 + ,t.ERR_FLG15 + ,t.ERR_FLG16 + ,t.ERR_FLG17 + ,t.ERR_FLG18 + ,t.ERR_FLG19 + ,t.ERR_FLG20 + ,t.KJYO_YM + ,t.TKSNBK_KBN + ,t.FCL_EXEC_KBN + ,t.REC_STS_KBN + ,t.INS_DT + ,t.INS_USR + ,SYSDATE() + FROM org05.sales AS t + ON DUPLICATE KEY UPDATE + REC_DATA=t.REC_DATA + ,REC_WHS_CD=t.REC_WHS_CD + ,REC_WHS_SUB_CD=t.REC_WHS_SUB_CD + ,REC_WHS_ORG_CD=t.REC_WHS_ORG_CD + ,REC_CUST_CD=t.REC_CUST_CD + ,REC_COMM_CD=t.REC_COMM_CD + ,REC_TRAN_KBN=t.REC_TRAN_KBN + ,REV_HSDNYMD_WRK=t.REV_HSDNYMD_WRK + ,REV_HSDNYMD_SRK=t.REV_HSDNYMD_SRK + ,REC_URAG_NUM=t.REC_URAG_NUM + ,REC_QTY=t.REC_QTY + ,REC_NONYU_PRICE=t.REC_NONYU_PRICE + ,REC_NONYU_AMT=t.REC_NONYU_AMT + ,REC_COMM_NAME=t.REC_COMM_NAME + ,REC_NONYU_FCL_NAME=t.REC_NONYU_FCL_NAME + ,FREE_ITEM=t.FREE_ITEM + ,REC_NONYU_FCL_ADDR=t.REC_NONYU_FCL_ADDR + ,REC_NONYU_FCL_POST=t.REC_NONYU_FCL_POST + ,REC_NONYU_FCL_TEL=t.REC_NONYU_FCL_TEL + ,REC_BEF_HSDN_YMD=t.REC_BEF_HSDN_YMD + ,REC_BEF_SLIP_NUM=t.REC_BEF_SLIP_NUM + ,REC_YMD=t.REC_YMD + ,SALE_DATA_CAT=t.SALE_DATA_CAT + ,SLIP_FILE_NAME=t.SLIP_FILE_NAME + ,SLIP_MGT_NUM=t.SLIP_MGT_NUM + ,ROW_NUM=t.ROW_NUM + ,HSDN_YMD=t.HSDN_YMD + ,EXEC_DT=t.EXEC_DT + ,V_TRAN_CD=t.V_TRAN_CD + ,TRAN_KBN_NAME=t.TRAN_KBN_NAME + ,WHS_ORG_CD=t.WHS_ORG_CD + ,V_WHSORG_CD=t.V_WHSORG_CD + ,WHS_ORG_NAME=t.WHS_ORG_NAME + ,WHS_ORG_KN=t.WHS_ORG_KN + ,V_WHS_CD=t.V_WHS_CD + ,WHS_NAME=t.WHS_NAME + ,NONYU_FCL_CD=t.NONYU_FCL_CD + ,V_INST_CD=t.V_INST_CD + ,V_INST_KN=t.V_INST_KN + ,V_INST_NAME=t.V_INST_NAME + ,V_INST_ADDR=t.V_INST_ADDR + ,COMM_CD=t.COMM_CD + ,COMM_NAME=t.COMM_NAME + ,NONYU_QTY=t.NONYU_QTY + ,NONYU_PRICE=t.NONYU_PRICE + ,NONYU_AMT=t.NONYU_AMT + ,SHIKIRI_PRICE=t.SHIKIRI_PRICE + ,SHIKIRI_AMT=t.SHIKIRI_AMT + ,NHI_PRICE=t.NHI_PRICE + ,NHI_AMT=t.NHI_AMT + ,WHSPOS_ERR_KBN=t.WHSPOS_ERR_KBN + ,HTDNYMD_ERR_KBN=t.HTDNYMD_ERR_KBN + ,PRD_EXIS_KBN=t.PRD_EXIS_KBN + ,FCL_EXIS_KBN=t.FCL_EXIS_KBN + ,BEF_HSDN_YMD=t.BEF_HSDN_YMD + ,BEF_SLIP_NUM=t.BEF_SLIP_NUM + ,SLIP_ORG_KBN=t.SLIP_ORG_KBN + ,ERR_FLG1=t.ERR_FLG1 + ,ERR_FLG2=t.ERR_FLG2 + ,ERR_FLG3=t.ERR_FLG3 + ,ERR_FLG4=t.ERR_FLG4 + ,ERR_FLG5=t.ERR_FLG5 + ,ERR_FLG6=t.ERR_FLG6 + ,ERR_FLG7=t.ERR_FLG7 + ,ERR_FLG8=t.ERR_FLG8 + ,ERR_FLG9=t.ERR_FLG9 + ,ERR_FLG10=t.ERR_FLG10 + ,ERR_FLG11=t.ERR_FLG11 + ,ERR_FLG12=t.ERR_FLG12 + ,ERR_FLG13=t.ERR_FLG13 + ,ERR_FLG14=t.ERR_FLG14 + ,ERR_FLG15=t.ERR_FLG15 + ,ERR_FLG16=t.ERR_FLG16 + ,ERR_FLG17=t.ERR_FLG17 + ,ERR_FLG18=t.ERR_FLG18 + ,ERR_FLG19=t.ERR_FLG19 + ,ERR_FLG20=t.ERR_FLG20 + ,KJYO_YM=t.KJYO_YM + ,TKSNBK_KBN=t.TKSNBK_KBN + ,FCL_EXEC_KBN=t.FCL_EXEC_KBN + ,REC_STS_KBN=t.REC_STS_KBN + ,INS_DT=t.INS_DT + ,INS_USR=t.INS_USR + ,DWH_UPD_DT=SYSDATE() + ; + """) }, # V卸ホールディングスマスタ @@ -33,7 +297,50 @@ class VjskRecvFileMapper: _KEY_FILE_PREFIX: "hld_mst_", _KEY_FILE_SUFFIX: ".tsv", _KEY_ORG_TABLE: "org05.hld_mst_v", - _KEY_SRC_TABLE: "src05.hld_mst_v" + _KEY_SRC_TABLE: "src05.hld_mst_v", + _KEY_UPSERT_SQL: textwrap.dedent("""\ + INSERT INTO src05.hld_mst_v ( + V_HLD_CD + ,SUB_NUM + ,NAME + ,KN_NAME + ,ABB_NAME + ,START_DATE + ,END_DATE + ,DSP_ODR + ,REC_STS_KBN + ,INS_DT + ,UPD_DT + ,DWH_UPD_DT + ) + SELECT + t.V_HLD_CD + ,t.SUB_NUM + ,t.NAME + ,t.KN_NAME + ,t.ABB_NAME + ,t.START_DATE + ,t.END_DATE + ,t.DSP_ODR + ,t.REC_STS_KBN + ,t.INS_DT + ,t.UPD_DT + ,SYSDATE() FROM org05.hld_mst_v AS t + ON DUPLICATE KEY UPDATE + V_HLD_CD=t.V_HLD_CD + ,SUB_NUM=t.SUB_NUM + ,NAME=t.NAME + ,KN_NAME=t.KN_NAME + ,ABB_NAME=t.ABB_NAME + ,START_DATE=t.START_DATE + ,END_DATE=t.END_DATE + ,DSP_ODR=t.DSP_ODR + ,REC_STS_KBN=t.REC_STS_KBN + ,INS_DT=t.INS_DT + ,UPD_DT=t.UPD_DT + ,DWH_UPD_DT=SYSDATE() + ; + """) }, # V卸マスタ @@ -41,7 +348,66 @@ class VjskRecvFileMapper: _KEY_FILE_PREFIX: "whs_mst_", _KEY_FILE_SUFFIX: ".tsv", _KEY_ORG_TABLE: "org05.whs_mst_v", - _KEY_SRC_TABLE: "src05.whs_mst_v" + _KEY_SRC_TABLE: "src05.whs_mst_v", + _KEY_UPSERT_SQL: textwrap.dedent("""\ + INSERT INTO src05.whs_mst_v ( + V_WHS_CD + ,SUB_NUM + ,NAME + ,KN_NAME + ,ABB_NAME + ,POSTAL_CD + ,ADDR + ,KN_ADDR + ,TEL_NUM + ,V_HLD_CD + ,START_DATE + ,END_DATE + ,DSP_ODR + ,REC_STS_KBN + ,INS_DT + ,UPD_DT + ,DWH_UPD_DT + ) + SELECT + t.V_WHS_CD + ,t.SUB_NUM + ,t.NAME + ,t.KN_NAME + ,t.ABB_NAME + ,t.POSTAL_CD + ,t.ADDR + ,t.KN_ADDR + ,t.TEL_NUM + ,t.V_HLD_CD + ,t.START_DATE + ,t.END_DATE + ,t.DSP_ODR + ,t.REC_STS_KBN + ,t.INS_DT + ,t.UPD_DT + ,SYSDATE() + FROM org05.whs_mst_v AS t + ON DUPLICATE KEY UPDATE + V_WHS_CD=t.V_WHS_CD + ,SUB_NUM=t.SUB_NUM + ,NAME=t.NAME + ,KN_NAME=t.KN_NAME + ,ABB_NAME=t.ABB_NAME + ,POSTAL_CD=t.POSTAL_CD + ,ADDR=t.ADDR + ,KN_ADDR=t.KN_ADDR + ,TEL_NUM=t.TEL_NUM + ,V_HLD_CD=t.V_HLD_CD + ,START_DATE=t.START_DATE + ,END_DATE=t.END_DATE + ,DSP_ODR=t.DSP_ODR + ,REC_STS_KBN=t.REC_STS_KBN + ,INS_DT=t.INS_DT + ,UPD_DT=t.UPD_DT + ,DWH_UPD_DT=SYSDATE() + ; + """) }, # Vメーカー卸組織展開表 @@ -49,7 +415,156 @@ class VjskRecvFileMapper: _KEY_FILE_PREFIX: "mkr_org_horizon_", _KEY_FILE_SUFFIX: ".tsv", _KEY_ORG_TABLE: "org05.mkr_org_horizon_v", - _KEY_SRC_TABLE: "src05.mkr_org_horizon_v" + _KEY_SRC_TABLE: "src05.mkr_org_horizon_v", + _KEY_UPSERT_SQL: textwrap.dedent("""\ + INSERT INTO src05.mkr_org_horizon_v ( + VID_KIND_1 + ,V_CD_1 + ,NAME_1 + ,DSP_ODR_1 + ,VID_KIND_2 + ,V_CD_2 + ,NAME_2 + ,DSP_ODR_2 + ,VID_KIND_3 + ,V_CD_3 + ,NAME_3 + ,DSP_ODR_3 + ,VID_KIND_4 + ,V_CD_4 + ,NAME_4 + ,DSP_ODR_4 + ,VID_KIND_5 + ,V_CD_5 + ,NAME_5 + ,DSP_ODR_5 + ,VID_KIND_6 + ,V_CD_6 + ,NAME_6 + ,DSP_ODR_6 + ,VID_KIND_7 + ,V_CD_7 + ,NAME_7 + ,DSP_ODR_7 + ,VID_KIND_8 + ,V_CD_8 + ,NAME_8 + ,DSP_ODR_8 + ,VID_KIND_9 + ,V_CD_9 + ,NAME_9 + ,DSP_ODR_9 + ,VID_KIND_10 + ,V_CD_10 + ,NAME_10 + ,DSP_ODR_10 + ,V_WHS_CD + ,START_DATE + ,END_DATE + ,REC_STS_KBN + ,INS_DT + ,UPD_DT + ,DWH_UPD_DT + ) + SELECT + t.VID_KIND_1 + ,t.V_CD_1 + ,t.NAME_1 + ,t.DSP_ODR_1 + ,t.VID_KIND_2 + ,t.V_CD_2 + ,t.NAME_2 + ,t.DSP_ODR_2 + ,t.VID_KIND_3 + ,t.V_CD_3 + ,t.NAME_3 + ,t.DSP_ODR_3 + ,t.VID_KIND_4 + ,t.V_CD_4 + ,t.NAME_4 + ,t.DSP_ODR_4 + ,t.VID_KIND_5 + ,t.V_CD_5 + ,t.NAME_5 + ,t.DSP_ODR_5 + ,t.VID_KIND_6 + ,t.V_CD_6 + ,t.NAME_6 + ,t.DSP_ODR_6 + ,t.VID_KIND_7 + ,t.V_CD_7 + ,t.NAME_7 + ,t.DSP_ODR_7 + ,t.VID_KIND_8 + ,t.V_CD_8 + ,t.NAME_8 + ,t.DSP_ODR_8 + ,t.VID_KIND_9 + ,t.V_CD_9 + ,t.NAME_9 + ,t.DSP_ODR_9 + ,t.VID_KIND_10 + ,t.V_CD_10 + ,t.NAME_10 + ,t.DSP_ODR_10 + ,t.V_WHS_CD + ,t.START_DATE + ,t.END_DATE + ,t.REC_STS_KBN + ,t.INS_DT + ,t.UPD_DT + ,SYSDATE() + FROM org05.mkr_org_horizon_v AS t + ON DUPLICATE KEY UPDATE + VID_KIND_1=t.VID_KIND_1 + ,V_CD_1=t.V_CD_1 + ,NAME_1=t.NAME_1 + ,DSP_ODR_1=t.DSP_ODR_1 + ,VID_KIND_2=t.VID_KIND_2 + ,V_CD_2=t.V_CD_2 + ,NAME_2=t.NAME_2 + ,DSP_ODR_2=t.DSP_ODR_2 + ,VID_KIND_3=t.VID_KIND_3 + ,V_CD_3=t.V_CD_3 + ,NAME_3=t.NAME_3 + ,DSP_ODR_3=t.DSP_ODR_3 + ,VID_KIND_4=t.VID_KIND_4 + ,V_CD_4=t.V_CD_4 + ,NAME_4=t.NAME_4 + ,DSP_ODR_4=t.DSP_ODR_4 + ,VID_KIND_5=t.VID_KIND_5 + ,V_CD_5=t.V_CD_5 + ,NAME_5=t.NAME_5 + ,DSP_ODR_5=t.DSP_ODR_5 + ,VID_KIND_6=t.VID_KIND_6 + ,V_CD_6=t.V_CD_6 + ,NAME_6=t.NAME_6 + ,DSP_ODR_6=t.DSP_ODR_6 + ,VID_KIND_7=t.VID_KIND_7 + ,V_CD_7=t.V_CD_7 + ,NAME_7=t.NAME_7 + ,DSP_ODR_7=t.DSP_ODR_7 + ,VID_KIND_8=t.VID_KIND_8 + ,V_CD_8=t.V_CD_8 + ,NAME_8=t.NAME_8 + ,DSP_ODR_8=t.DSP_ODR_8 + ,VID_KIND_9=t.VID_KIND_9 + ,V_CD_9=t.V_CD_9 + ,NAME_9=t.NAME_9 + ,DSP_ODR_9=t.DSP_ODR_9 + ,VID_KIND_10=t.VID_KIND_10 + ,V_CD_10=t.V_CD_10 + ,NAME_10=t.NAME_10 + ,DSP_ODR_10=t.DSP_ODR_10 + ,V_WHS_CD=t.V_WHS_CD + ,START_DATE=t.START_DATE + ,END_DATE=t.END_DATE + ,REC_STS_KBN=t.REC_STS_KBN + ,INS_DT=t.INS_DT + ,UPD_DT=t.UPD_DT + ,DWH_UPD_DT=SYSDATE() + ; + """) }, # V卸組織変換マスタ @@ -57,7 +572,51 @@ class VjskRecvFileMapper: _KEY_FILE_PREFIX: "org_cnv_mst_", _KEY_FILE_SUFFIX: ".tsv", _KEY_ORG_TABLE: "org05.org_cnv_mst_v", - _KEY_SRC_TABLE: "src05.org_cnv_mst_v" + _KEY_SRC_TABLE: "src05.org_cnv_mst_v", + _KEY_UPSERT_SQL: textwrap.dedent("""\ + INSERT INTO src05.org_cnv_mst_v ( + WHS_CD + ,WHS_SUB_CD + ,ORG_CD + ,SUB_NUM + ,V_ORG_CD + ,START_DATE + ,END_DATE + ,DSP_ODR + ,REC_STS_KBN + ,INS_DT + ,UPD_DT + ,DWH_UPD_DT + ) + SELECT + t.WHS_CD + ,t.WHS_SUB_CD + ,t.ORG_CD + ,t.SUB_NUM + ,t.V_ORG_CD + ,t.START_DATE + ,t.END_DATE + ,t.DSP_ODR + ,t.REC_STS_KBN + ,t.INS_DT + ,t.UPD_DT + ,SYSDATE() + FROM org05.org_cnv_mst_v AS t + ON DUPLICATE KEY UPDATE + WHS_CD=t.WHS_CD + ,WHS_SUB_CD=t.WHS_SUB_CD + ,ORG_CD=t.ORG_CD + ,SUB_NUM=t.SUB_NUM + ,V_ORG_CD=t.V_ORG_CD + ,START_DATE=t.START_DATE + ,END_DATE=t.END_DATE + ,DSP_ODR=t.DSP_ODR + ,REC_STS_KBN=t.REC_STS_KBN + ,INS_DT=t.INS_DT + ,UPD_DT=t.UPD_DT + ,DWH_UPD_DT=SYSDATE() + ; + """) }, # V取引区分マスタ @@ -65,7 +624,45 @@ class VjskRecvFileMapper: _KEY_FILE_PREFIX: "tran_kbn_mst_", _KEY_FILE_SUFFIX: ".tsv", _KEY_ORG_TABLE: "org05.tran_kbn_mst_v", - _KEY_SRC_TABLE: "src05.tran_kbn_mst_v" + _KEY_SRC_TABLE: "src05.tran_kbn_mst_v", + _KEY_UPSERT_SQL: textwrap.dedent("""\ + INSERT INTO src05.tran_kbn_mst_v ( + V_TRAN_CD + ,SUB_NUM + ,NAME + ,START_DATE + ,END_DATE + ,DSP_ODR + ,REC_STS_KBN + ,INS_DT + ,UPD_DT + ,DWH_UPD_DT + ) + SELECT + t.V_TRAN_CD + ,t.SUB_NUM + ,t.NAME + ,t.START_DATE + ,t.END_DATE + ,t.DSP_ODR + ,t.REC_STS_KBN + ,t.INS_DT + ,t.UPD_DT + ,SYSDATE() + FROM org05.tran_kbn_mst_v AS t + ON DUPLICATE KEY UPDATE + V_TRAN_CD=t.V_TRAN_CD + ,SUB_NUM=t.SUB_NUM + ,NAME=t.NAME + ,START_DATE=t.START_DATE + ,END_DATE=t.END_DATE + ,DSP_ODR=t.DSP_ODR + ,REC_STS_KBN=t.REC_STS_KBN + ,INS_DT=t.INS_DT + ,UPD_DT=t.UPD_DT + ,DWH_UPD_DT=SYSDATE() + ; + """) }, # V施設マスタ @@ -73,7 +670,90 @@ class VjskRecvFileMapper: _KEY_FILE_PREFIX: "fcl_mst_", _KEY_FILE_SUFFIX: ".tsv", _KEY_ORG_TABLE: "org05.fcl_mst_v", - _KEY_SRC_TABLE: "src05.fcl_mst_v" + _KEY_SRC_TABLE: "src05.fcl_mst_v", + _KEY_UPSERT_SQL: textwrap.dedent("""\ + INSERT INTO src05.fcl_mst_v ( + V_INST_CD + ,SUB_NUM + ,START_DATE + ,END_DATE + ,CLOSED_DT + ,FCL_NAME + ,FCL_KN_NAME + ,FCL_ABB_NAME + ,FCL_ABB_KN_NAME + ,MKR_CD + ,JSK_PROC_KBN + ,FMT_ADDR + ,FMT_KN_ADDR + ,POSTAL_CD + ,PRFT_CD + ,PRFT_NAME + ,CITY_NAME + ,ADDR_LINE_1 + ,TEL_NUM + ,ADMIN_KBN + ,FCL_TYPE + ,REC_STS_KBN + ,INS_DT + ,UPD_DT + ,DWH_UPD_DT + ) + SELECT + t.V_INST_CD + ,t.SUB_NUM + ,t.START_DATE + ,t.END_DATE + ,t.CLOSED_DT + ,t.FCL_NAME + ,t.FCL_KN_NAME + ,t.FCL_ABB_NAME + ,t.FCL_ABB_KN_NAME + ,t.MKR_CD + ,t.JSK_PROC_KBN + ,t.FMT_ADDR + ,t.FMT_KN_ADDR + ,t.POSTAL_CD + ,t.PRFT_CD + ,t.PRFT_NAME + ,t.CITY_NAME + ,t.ADDR_LINE_1 + ,t.TEL_NUM + ,t.ADMIN_KBN + ,t.FCL_TYPE + ,t.REC_STS_KBN + ,t.INS_DT + ,t.UPD_DT + ,SYSDATE() + FROM org05.fcl_mst_v AS t + ON DUPLICATE KEY UPDATE + V_INST_CD=t.V_INST_CD + ,SUB_NUM=t.SUB_NUM + ,START_DATE=t.START_DATE + ,END_DATE=t.END_DATE + ,CLOSED_DT=t.CLOSED_DT + ,FCL_NAME=t.FCL_NAME + ,FCL_KN_NAME=t.FCL_KN_NAME + ,FCL_ABB_NAME=t.FCL_ABB_NAME + ,FCL_ABB_KN_NAME=t.FCL_ABB_KN_NAME + ,MKR_CD=t.MKR_CD + ,JSK_PROC_KBN=t.JSK_PROC_KBN + ,FMT_ADDR=t.FMT_ADDR + ,FMT_KN_ADDR=t.FMT_KN_ADDR + ,POSTAL_CD=t.POSTAL_CD + ,PRFT_CD=t.PRFT_CD + ,PRFT_NAME=t.PRFT_NAME + ,CITY_NAME=t.CITY_NAME + ,ADDR_LINE_1=t.ADDR_LINE_1 + ,TEL_NUM=t.TEL_NUM + ,ADMIN_KBN=t.ADMIN_KBN + ,FCL_TYPE=t.FCL_TYPE + ,REC_STS_KBN=t.REC_STS_KBN + ,INS_DT=t.INS_DT + ,UPD_DT=t.UPD_DT + ,DWH_UPD_DT=SYSDATE() + ; + """) }, # V製品マスタ @@ -81,7 +761,102 @@ class VjskRecvFileMapper: _KEY_FILE_PREFIX: "phm_prd_mst_", _KEY_FILE_SUFFIX: ".tsv", _KEY_ORG_TABLE: "org05.phm_prd_mst_v", - _KEY_SRC_TABLE: "src05.phm_prd_mst_v" + _KEY_SRC_TABLE: "src05.phm_prd_mst_v", + _KEY_UPSERT_SQL: textwrap.dedent("""\ + INSERT INTO src05.phm_prd_mst_v ( + PRD_CD + ,SUB_NUM + ,PRD_NAME + ,PRD_E_NAME + ,MKR_CD + ,MKR_INF_1 + ,MKR_INF_2 + ,PHM_ITM_CD + ,ITM_NAME + ,ITM_ABB_NAME + ,FORM_CD + ,FORM_NAME + ,VOL_CD + ,VOL_NAME + ,CONT_CD + ,CONT_NAME + ,PKG_CD + ,PKG_NAME + ,CNV_NUM + ,JSK_START_DT + ,PRD_SALE_KBN + ,JSK_PROC_KBN + ,START_DATE + ,END_DATE + ,DSP_ODR + ,REC_STS_KBN + ,INS_DT + ,UPD_DT + ,DWH_UPD_DT + ) + SELECT + t.PRD_CD + ,t.SUB_NUM + ,t.PRD_NAME + ,t.PRD_E_NAME + ,t.MKR_CD + ,t.MKR_INF_1 + ,t.MKR_INF_2 + ,t.PHM_ITM_CD + ,t.ITM_NAME + ,t.ITM_ABB_NAME + ,t.FORM_CD + ,t.FORM_NAME + ,t.VOL_CD + ,t.VOL_NAME + ,t.CONT_CD + ,t.CONT_NAME + ,t.PKG_CD + ,t.PKG_NAME + ,t.CNV_NUM + ,t.JSK_START_DT + ,t.PRD_SALE_KBN + ,t.JSK_PROC_KBN + ,t.START_DATE + ,t.END_DATE + ,t.DSP_ODR + ,t.REC_STS_KBN + ,t.INS_DT + ,t.UPD_DT + ,SYSDATE() + FROM org05.phm_prd_mst_v AS t + ON DUPLICATE KEY UPDATE + PRD_CD=t.PRD_CD + ,SUB_NUM=t.SUB_NUM + ,PRD_NAME=t.PRD_NAME + ,PRD_E_NAME=t.PRD_E_NAME + ,MKR_CD=t.MKR_CD + ,MKR_INF_1=t.MKR_INF_1 + ,MKR_INF_2=t.MKR_INF_2 + ,PHM_ITM_CD=t.PHM_ITM_CD + ,ITM_NAME=t.ITM_NAME + ,ITM_ABB_NAME=t.ITM_ABB_NAME + ,FORM_CD=t.FORM_CD + ,FORM_NAME=t.FORM_NAME + ,VOL_CD=t.VOL_CD + ,VOL_NAME=t.VOL_NAME + ,CONT_CD=t.CONT_CD + ,CONT_NAME=t.CONT_NAME + ,PKG_CD=t.PKG_CD + ,PKG_NAME=t.PKG_NAME + ,CNV_NUM=t.CNV_NUM + ,JSK_START_DT=t.JSK_START_DT + ,PRD_SALE_KBN=t.PRD_SALE_KBN + ,JSK_PROC_KBN=t.JSK_PROC_KBN + ,START_DATE=t.START_DATE + ,END_DATE=t.END_DATE + ,DSP_ODR=t.DSP_ODR + ,REC_STS_KBN=t.REC_STS_KBN + ,INS_DT=t.INS_DT + ,UPD_DT=t.UPD_DT + ,DWH_UPD_DT=SYSDATE() + ; + """) }, # V製品価格マスタ @@ -89,7 +864,48 @@ class VjskRecvFileMapper: _KEY_FILE_PREFIX: "phm_price_mst_", _KEY_FILE_SUFFIX: ".tsv", _KEY_ORG_TABLE: "org05.phm_price_mst_v", - _KEY_SRC_TABLE: "src05.phm_price_mst_v" + _KEY_SRC_TABLE: "src05.phm_price_mst_v", + _KEY_UPSERT_SQL: textwrap.dedent("""\ + INSERT INTO src05.phm_price_mst_v ( + PHM_PRD_CD + ,PHM_PRICE_KIND + ,SUB_NUM + ,PRICE + ,START_DATE + ,END_DATE + ,DSP_ODR + ,REC_STS_KBN + ,INS_DT + ,UPD_DT + ,DWH_UPD_DT + ) + SELECT + t.PHM_PRD_CD + ,t.PHM_PRICE_KIND + ,t.SUB_NUM + ,t.PRICE + ,t.START_DATE + ,t.END_DATE + ,t.DSP_ODR + ,t.REC_STS_KBN + ,t.INS_DT + ,t.UPD_DT + ,SYSDATE() + FROM org05.phm_price_mst_v AS t + ON DUPLICATE KEY UPDATE + PHM_PRD_CD=t.PHM_PRD_CD + ,PHM_PRICE_KIND=t.PHM_PRICE_KIND + ,SUB_NUM=t.SUB_NUM + ,PRICE=t.PRICE + ,START_DATE=t.START_DATE + ,END_DATE=t.END_DATE + ,DSP_ODR=t.DSP_ODR + ,REC_STS_KBN=t.REC_STS_KBN + ,INS_DT=t.INS_DT + ,UPD_DT=t.UPD_DT + ,DWH_UPD_DT=SYSDATE() + ; + """) }, # V施設統合マスタ @@ -97,7 +913,30 @@ class VjskRecvFileMapper: _KEY_FILE_PREFIX: "vop_hco_merge_", _KEY_FILE_SUFFIX: ".tsv", _KEY_ORG_TABLE: "org05.vop_hco_merge_v", - _KEY_SRC_TABLE: "src05.vop_hco_merge_v" + _KEY_SRC_TABLE: "src05.vop_hco_merge_v", + _KEY_UPSERT_SQL: textwrap.dedent("""\ + INSERT INTO src05.vop_hco_merge_v ( + V_INST_CD + ,V_INST_CD_MERG + ,APPLY_DT + ,MERGE_REASON + ,DWH_UPD_DT + ) + SELECT + t.V_INST_CD + ,t.V_INST_CD_MERG + ,t.APPLY_DT + ,t.MERGE_REASON + ,SYSDATE() + FROM org05.vop_hco_merge_v AS t + ON DUPLICATE KEY UPDATE + V_INST_CD=t.V_INST_CD + ,V_INST_CD_MERG=t.V_INST_CD_MERG + ,APPLY_DT=t.APPLY_DT + ,MERGE_REASON=t.MERGE_REASON + ,DWH_UPD_DT=SYSDATE() + ; + """) }, # V卸得意先情報マスタ @@ -105,15 +944,112 @@ class VjskRecvFileMapper: _KEY_FILE_PREFIX: "whs_customer_mst_", _KEY_FILE_SUFFIX: ".tsv", _KEY_ORG_TABLE: "org05.whs_customer_mst_v", - _KEY_SRC_TABLE: "src05.whs_customer_mst_v" + _KEY_SRC_TABLE: "src05.whs_customer_mst_v", + _KEY_UPSERT_SQL: textwrap.dedent("""\ + INSERT INTO src05.whs_customer_mst_v ( + WHS_CD + ,WHS_SUB_CD + ,CUSTOMER_CD + ,SUB_NUM + ,START_DATE + ,END_DATE + ,WHS_ORG_CD + ,SRC_ORG_CD + ,NAME + ,KN_NAME + ,ADDR + ,KN_ADDR + ,POSTAL_CD + ,TEL_NUM + ,REC_STS_KBN + ,INS_DT + ,UPD_DT + ,DWH_UPD_DT + ) + SELECT + t.WHS_CD + ,t.WHS_SUB_CD + ,t.CUSTOMER_CD + ,t.SUB_NUM + ,t.START_DATE + ,t.END_DATE + ,t.WHS_ORG_CD + ,t.SRC_ORG_CD + ,t.NAME + ,t.KN_NAME + ,t.ADDR + ,t.KN_ADDR + ,t.POSTAL_CD + ,t.TEL_NUM + ,t.REC_STS_KBN + ,t.INS_DT + ,t.UPD_DT + ,SYSDATE() + FROM org05.whs_customer_mst_v AS t + ON DUPLICATE KEY UPDATE + WHS_CD=t.WHS_CD + ,WHS_SUB_CD=t.WHS_SUB_CD + ,CUSTOMER_CD=t.CUSTOMER_CD + ,SUB_NUM=t.SUB_NUM + ,START_DATE=t.START_DATE + ,END_DATE=t.END_DATE + ,WHS_ORG_CD=t.WHS_ORG_CD + ,SRC_ORG_CD=t.SRC_ORG_CD + ,NAME=t.NAME + ,KN_NAME=t.KN_NAME + ,ADDR=t.ADDR + ,KN_ADDR=t.KN_ADDR + ,POSTAL_CD=t.POSTAL_CD + ,TEL_NUM=t.TEL_NUM + ,REC_STS_KBN=t.REC_STS_KBN + ,INS_DT=t.INS_DT + ,UPD_DT=t.UPD_DT + ,DWH_UPD_DT=SYSDATE() + ; + """) }, # MDBコード変換表 CONDKEY_MDB_CONV_MST: { _KEY_FILE_PREFIX: "mdb_conv_mst_", _KEY_FILE_SUFFIX: ".tsv", - _KEY_ORG_TABLE: "org05.mdb_conv_mst_v", - _KEY_SRC_TABLE: "src05.mdb_conv_mst_v" + _KEY_ORG_TABLE: "org05.mdb_cnv_mst_v", + _KEY_SRC_TABLE: "src05.mdb_cnv_mst_v", + _KEY_UPSERT_SQL: textwrap.dedent("""\ + INSERT INTO src05.mdb_cnv_mst_v ( + HCO_VID_V + ,SUB_NUM + ,MDB_CD + ,RELIABILITY + ,START_DATE + ,REC_STS_KBN + ,INS_DT + ,UPD_DT + ,DWH_UPD_DT + ) + SELECT + t.HCO_VID_V + ,t.SUB_NUM + ,t.MDB_CD + ,t.RELIABILITY + ,t.START_DATE + ,t.REC_STS_KBN + ,t.INS_DT + ,t.UPD_DT + ,SYSDATE() + FROM org05.mdb_cnv_mst_v AS t + ON DUPLICATE KEY UPDATE + HCO_VID_V=t.HCO_VID_V + ,SUB_NUM=t.SUB_NUM + ,MDB_CD=t.MDB_CD + ,RELIABILITY=t.RELIABILITY + ,START_DATE=t.START_DATE + ,REC_STS_KBN=t.REC_STS_KBN + ,INS_DT=t.INS_DT + ,UPD_DT=t.UPD_DT + ,DWH_UPD_DT=SYSDATE() + ; + """) }, # 卸在庫データ @@ -121,7 +1057,105 @@ class VjskRecvFileMapper: _KEY_FILE_PREFIX: "stock_slip_data_", _KEY_FILE_SUFFIX: ".tsv", _KEY_ORG_TABLE: "org05.whole_stock", - _KEY_SRC_TABLE: "src05.whole_stock" + _KEY_SRC_TABLE: "src05.whole_stock", + _KEY_UPSERT_SQL: textwrap.dedent("""\ + INSERT INTO src05.whole_stock ( + REC_DATA + ,REC_WHS_CD + ,REC_WHS_SUB_CD + ,REC_STO_PLACE + ,REC_STOCK_YMD + ,REC_COMM_CD + ,REC_QTY + ,REC_STOCK_NO_SIGN + ,REC_JAN_CD + ,FREE_ITEM + ,REC_YMD + ,SALE_DATA_CAT + ,SLIP_FILE_NAME + ,SLIP_MGT_NUM + ,ROW_NUM + ,EXEC_DT + ,ERR_FLG1 + ,ERR_FLG2 + ,ERR_FLG3 + ,ERR_FLG4 + ,ERR_FLG5 + ,ERR_FLG6 + ,ERR_FLG7 + ,ERR_FLG8 + ,ERR_FLG9 + ,ERR_FLG10 + ,REC_STS_KBN + ,INS_DT + ,INS_USR + ,DWH_UPD_DT + ) + SELECT + t.REC_DATA + ,t.REC_WHS_CD + ,t.REC_WHS_SUB_CD + ,t.REC_STO_PLACE + ,t.REC_STOCK_YMD + ,t.REC_COMM_CD + ,t.REC_QTY + ,t.REC_STOCK_NO_SIGN + ,t.REC_JAN_CD + ,t.FREE_ITEM + ,t.REC_YMD + ,t.SALE_DATA_CAT + ,t.SLIP_FILE_NAME + ,t.SLIP_MGT_NUM + ,t.ROW_NUM + ,t.EXEC_DT + ,t.ERR_FLG1 + ,t.ERR_FLG2 + ,t.ERR_FLG3 + ,t.ERR_FLG4 + ,t.ERR_FLG5 + ,t.ERR_FLG6 + ,t.ERR_FLG7 + ,t.ERR_FLG8 + ,t.ERR_FLG9 + ,t.ERR_FLG10 + ,t.REC_STS_KBN + ,t.INS_DT + ,t.INS_USR + ,SYSDATE() + FROM org05.whole_stock AS t + ON DUPLICATE KEY UPDATE + REC_DATA=t.REC_DATA + ,REC_WHS_CD=t.REC_WHS_CD + ,REC_WHS_SUB_CD=t.REC_WHS_SUB_CD + ,REC_STO_PLACE=t.REC_STO_PLACE + ,REC_STOCK_YMD=t.REC_STOCK_YMD + ,REC_COMM_CD=t.REC_COMM_CD + ,REC_QTY=t.REC_QTY + ,REC_STOCK_NO_SIGN=t.REC_STOCK_NO_SIGN + ,REC_JAN_CD=t.REC_JAN_CD + ,FREE_ITEM=t.FREE_ITEM + ,REC_YMD=t.REC_YMD + ,SALE_DATA_CAT=t.SALE_DATA_CAT + ,SLIP_FILE_NAME=t.SLIP_FILE_NAME + ,SLIP_MGT_NUM=t.SLIP_MGT_NUM + ,ROW_NUM=t.ROW_NUM + ,EXEC_DT=t.EXEC_DT + ,ERR_FLG1=t.ERR_FLG1 + ,ERR_FLG2=t.ERR_FLG2 + ,ERR_FLG3=t.ERR_FLG3 + ,ERR_FLG4=t.ERR_FLG4 + ,ERR_FLG5=t.ERR_FLG5 + ,ERR_FLG6=t.ERR_FLG6 + ,ERR_FLG7=t.ERR_FLG7 + ,ERR_FLG8=t.ERR_FLG8 + ,ERR_FLG9=t.ERR_FLG9 + ,ERR_FLG10=t.ERR_FLG10 + ,REC_STS_KBN=t.REC_STS_KBN + ,INS_DT=t.INS_DT + ,INS_USR=t.INS_USR + ,DWH_UPD_DT=SYSDATE() + ; + """) }, # 生物由来データ @@ -129,7 +1163,252 @@ class VjskRecvFileMapper: _KEY_FILE_PREFIX: "bio_slip_data_", _KEY_FILE_SUFFIX: ".tsv", _KEY_ORG_TABLE: "org05.bio_sales", - _KEY_SRC_TABLE: "src05.bio_sales" + _KEY_SRC_TABLE: "src05.bio_sales", + _KEY_UPSERT_SQL: textwrap.dedent("""\ + INSERT INTO src05.bio_sales ( + REC_DATA + ,REC_WHS_CD + ,REC_WHS_SUB_CD + ,REC_WHS_ORG_CD + ,REC_CUST_CD + ,REC_COMM_CD + ,REC_TRAN_KBN + ,REV_HSDNYMD_WRK + ,REV_HSDNYMD_SRK + ,REC_URAG_NUM + ,REC_COMM_NAME + ,REC_NONYU_FCL_NAME + ,REC_NONYU_FCL_ADDR + ,REC_LOT_NUM1 + ,REC_QTY1 + ,REC_LOT_NUM2 + ,REC_QTY2 + ,REC_LOT_NUM3 + ,REC_QTY3 + ,REC_YMD + ,SALE_DATA_CAT + ,SLIP_FILE_NAME + ,SLIP_MGT_NUM + ,ROW_NUM + ,HSDN_YMD + ,EXEC_DT + ,V_TRAN_CD + ,TRAN_KBN_NAME + ,WHS_ORG_CD + ,V_WHSORG_CD + ,WHS_ORG_NAME + ,WHS_ORG_KN + ,V_WHS_CD + ,WHS_NAME + ,NONYU_FCL_CD + ,V_INST_CD + ,V_INST_NAME + ,V_INST_KN + ,V_INST_ADDR + ,COMM_CD + ,PRODUCT_NAME + ,HTDNYMD_ERR_KBN + ,PRD_EXIS_KBN + ,FCL_EXIS_KBN + ,QTY1 + ,QTY2 + ,QTY3 + ,SLIP_ORG_KBN + ,BEF_SLIP_MGT_NUM + ,WHS_REP_COMM_NAME + ,WHS_REP_NONYU_FCL_NAME + ,WHS_REP_NONYU_FCL_ADDR + ,ERR_FLG1 + ,ERR_FLG2 + ,ERR_FLG3 + ,ERR_FLG4 + ,ERR_FLG5 + ,ERR_FLG6 + ,ERR_FLG7 + ,ERR_FLG8 + ,ERR_FLG9 + ,ERR_FLG10 + ,ERR_FLG11 + ,ERR_FLG12 + ,ERR_FLG13 + ,ERR_FLG14 + ,ERR_FLG15 + ,ERR_FLG16 + ,ERR_FLG17 + ,ERR_FLG18 + ,ERR_FLG19 + ,ERR_FLG20 + ,KJYO_YM + ,TKSNBK_KBN + ,FCL_EXEC_KBN + ,REC_STS_KBN + ,INS_DT + ,INS_USR + ,DWH_UPD_DT + ) + SELECT + t.REC_DATA + ,t.REC_WHS_CD + ,t.REC_WHS_SUB_CD + ,t.REC_WHS_ORG_CD + ,t.REC_CUST_CD + ,t.REC_COMM_CD + ,t.REC_TRAN_KBN + ,t.REV_HSDNYMD_WRK + ,t.REV_HSDNYMD_SRK + ,t.REC_URAG_NUM + ,t.REC_COMM_NAME + ,t.REC_NONYU_FCL_NAME + ,t.REC_NONYU_FCL_ADDR + ,t.REC_LOT_NUM1 + ,t.REC_QTY1 + ,t.REC_LOT_NUM2 + ,t.REC_QTY2 + ,t.REC_LOT_NUM3 + ,t.REC_QTY3 + ,t.REC_YMD + ,t.SALE_DATA_CAT + ,t.SLIP_FILE_NAME + ,t.SLIP_MGT_NUM + ,t.ROW_NUM + ,t.HSDN_YMD + ,t.EXEC_DT + ,t.V_TRAN_CD + ,t.TRAN_KBN_NAME + ,t.WHS_ORG_CD + ,t.V_WHSORG_CD + ,t.WHS_ORG_NAME + ,t.WHS_ORG_KN + ,t.V_WHS_CD + ,t.WHS_NAME + ,t.NONYU_FCL_CD + ,t.V_INST_CD + ,t.V_INST_NAME + ,t.V_INST_KN + ,t.V_INST_ADDR + ,t.COMM_CD + ,t.PRODUCT_NAME + ,t.HTDNYMD_ERR_KBN + ,t.PRD_EXIS_KBN + ,t.FCL_EXIS_KBN + ,t.QTY1 + ,t.QTY2 + ,t.QTY3 + ,t.SLIP_ORG_KBN + ,t.BEF_SLIP_MGT_NUM + ,t.WHS_REP_COMM_NAME + ,t.WHS_REP_NONYU_FCL_NAME + ,t.WHS_REP_NONYU_FCL_ADDR + ,t.ERR_FLG1 + ,t.ERR_FLG2 + ,t.ERR_FLG3 + ,t.ERR_FLG4 + ,t.ERR_FLG5 + ,t.ERR_FLG6 + ,t.ERR_FLG7 + ,t.ERR_FLG8 + ,t.ERR_FLG9 + ,t.ERR_FLG10 + ,t.ERR_FLG11 + ,t.ERR_FLG12 + ,t.ERR_FLG13 + ,t.ERR_FLG14 + ,t.ERR_FLG15 + ,t.ERR_FLG16 + ,t.ERR_FLG17 + ,t.ERR_FLG18 + ,t.ERR_FLG19 + ,t.ERR_FLG20 + ,t.KJYO_YM + ,t.TKSNBK_KBN + ,t.FCL_EXEC_KBN + ,t.REC_STS_KBN + ,t.INS_DT + ,t.INS_USR + ,SYSDATE() + FROM org05.bio_sales AS t + ON DUPLICATE KEY UPDATE + REC_DATA=t.REC_DATA + ,REC_WHS_CD=t.REC_WHS_CD + ,REC_WHS_SUB_CD=t.REC_WHS_SUB_CD + ,REC_WHS_ORG_CD=t.REC_WHS_ORG_CD + ,REC_CUST_CD=t.REC_CUST_CD + ,REC_COMM_CD=t.REC_COMM_CD + ,REC_TRAN_KBN=t.REC_TRAN_KBN + ,REV_HSDNYMD_WRK=t.REV_HSDNYMD_WRK + ,REV_HSDNYMD_SRK=t.REV_HSDNYMD_SRK + ,REC_URAG_NUM=t.REC_URAG_NUM + ,REC_COMM_NAME=t.REC_COMM_NAME + ,REC_NONYU_FCL_NAME=t.REC_NONYU_FCL_NAME + ,REC_NONYU_FCL_ADDR=t.REC_NONYU_FCL_ADDR + ,REC_LOT_NUM1=t.REC_LOT_NUM1 + ,REC_QTY1=t.REC_QTY1 + ,REC_LOT_NUM2=t.REC_LOT_NUM2 + ,REC_QTY2=t.REC_QTY2 + ,REC_LOT_NUM3=t.REC_LOT_NUM3 + ,REC_QTY3=t.REC_QTY3 + ,REC_YMD=t.REC_YMD + ,SALE_DATA_CAT=t.SALE_DATA_CAT + ,SLIP_FILE_NAME=t.SLIP_FILE_NAME + ,SLIP_MGT_NUM=t.SLIP_MGT_NUM + ,ROW_NUM=t.ROW_NUM + ,HSDN_YMD=t.HSDN_YMD + ,EXEC_DT=t.EXEC_DT + ,V_TRAN_CD=t.V_TRAN_CD + ,TRAN_KBN_NAME=t.TRAN_KBN_NAME + ,WHS_ORG_CD=t.WHS_ORG_CD + ,V_WHSORG_CD=t.V_WHSORG_CD + ,WHS_ORG_NAME=t.WHS_ORG_NAME + ,WHS_ORG_KN=t.WHS_ORG_KN + ,V_WHS_CD=t.V_WHS_CD + ,WHS_NAME=t.WHS_NAME + ,NONYU_FCL_CD=t.NONYU_FCL_CD + ,V_INST_CD=t.V_INST_CD + ,V_INST_NAME=t.V_INST_NAME + ,V_INST_KN=t.V_INST_KN + ,V_INST_ADDR=t.V_INST_ADDR + ,COMM_CD=t.COMM_CD + ,PRODUCT_NAME=t.PRODUCT_NAME + ,HTDNYMD_ERR_KBN=t.HTDNYMD_ERR_KBN + ,PRD_EXIS_KBN=t.PRD_EXIS_KBN + ,FCL_EXIS_KBN=t.FCL_EXIS_KBN + ,QTY1=t.QTY1 + ,QTY2=t.QTY2 + ,QTY3=t.QTY3 + ,SLIP_ORG_KBN=t.SLIP_ORG_KBN + ,BEF_SLIP_MGT_NUM=t.BEF_SLIP_MGT_NUM + ,WHS_REP_COMM_NAME=t.WHS_REP_COMM_NAME + ,WHS_REP_NONYU_FCL_NAME=t.WHS_REP_NONYU_FCL_NAME + ,WHS_REP_NONYU_FCL_ADDR=t.WHS_REP_NONYU_FCL_ADDR + ,ERR_FLG1=t.ERR_FLG1 + ,ERR_FLG2=t.ERR_FLG2 + ,ERR_FLG3=t.ERR_FLG3 + ,ERR_FLG4=t.ERR_FLG4 + ,ERR_FLG5=t.ERR_FLG5 + ,ERR_FLG6=t.ERR_FLG6 + ,ERR_FLG7=t.ERR_FLG7 + ,ERR_FLG8=t.ERR_FLG8 + ,ERR_FLG9=t.ERR_FLG9 + ,ERR_FLG10=t.ERR_FLG10 + ,ERR_FLG11=t.ERR_FLG11 + ,ERR_FLG12=t.ERR_FLG12 + ,ERR_FLG13=t.ERR_FLG13 + ,ERR_FLG14=t.ERR_FLG14 + ,ERR_FLG15=t.ERR_FLG15 + ,ERR_FLG16=t.ERR_FLG16 + ,ERR_FLG17=t.ERR_FLG17 + ,ERR_FLG18=t.ERR_FLG18 + ,ERR_FLG19=t.ERR_FLG19 + ,ERR_FLG20=t.ERR_FLG20 + ,KJYO_YM=t.KJYO_YM + ,TKSNBK_KBN=t.TKSNBK_KBN + ,FCL_EXEC_KBN=t.FCL_EXEC_KBN + ,REC_STS_KBN=t.REC_STS_KBN + ,INS_DT=t.INS_DT + ,INS_USR=t.INS_USR + ,DWH_UPD_DT=SYSDATE() + ; + """) }, # ロットマスタデータ @@ -137,7 +1416,36 @@ class VjskRecvFileMapper: _KEY_FILE_PREFIX: "lot_num_ms_", _KEY_FILE_SUFFIX: ".tsv", _KEY_ORG_TABLE: "org05.lot_num_mst", - _KEY_SRC_TABLE: "src05.lot_num_mst" + _KEY_SRC_TABLE: "src05.lot_num_mst", + _KEY_UPSERT_SQL: textwrap.dedent("""\ + INSERT INTO src05.lot_num_mst ( + SER_NUM + ,LOT_NUM + ,EXPR_DT + ,FRST_MOV_DT + ,INS_DT + ,INS_USR + ,DWH_UPD_DT + ) + SELECT + t.SER_NUM + ,t.LOT_NUM + ,t.EXPR_DT + ,t.FRST_MOV_DT + ,t.INS_DT + ,t.INS_USR + ,SYSDATE() + FROM org05.lot_num_mst AS t + ON DUPLICATE KEY UPDATE + SER_NUM=t.SER_NUM + ,LOT_NUM=t.LOT_NUM + ,EXPR_DT=t.EXPR_DT + ,FRST_MOV_DT=t.FRST_MOV_DT + ,INS_DT=t.INS_DT + ,INS_USR=t.INS_USR + ,DWH_UPD_DT=SYSDATE() + ; + """) }, } @@ -165,12 +1473,19 @@ class VjskRecvFileMapper: ret = self._VJSK_INTERFACE_MAPPING.get(condkey).get(self._KEY_SRC_TABLE) return ret + def get_upsert_sql(self, condkey: str) -> str: + ret = None + if condkey in self._VJSK_INTERFACE_MAPPING: + ret = self._VJSK_INTERFACE_MAPPING.get(condkey).get(self._KEY_UPSERT_SQL) + return ret + def get_condkey_by_s3_file_path(self, s3_file_path: str) -> str: ret = None filename = s3_file_path[s3_file_path.rfind("/") + 1:] for condkey in self._VJSK_INTERFACE_MAPPING: element = self._VJSK_INTERFACE_MAPPING.get(condkey) - if filename.startswith(element.get(self._KEY_FILE_PREFIX)) and filename.endswith(element.get(self._KEY_FILE_SUFFIX)): + if filename.startswith(element.get(self._KEY_FILE_PREFIX)) \ + and filename.endswith(element.get(self._KEY_FILE_SUFFIX)): ret = condkey break return ret