fix:条件項目が文字列型8桁,6桁,日付型で来られても大丈夫なように修正
This commit is contained in:
parent
05195b7b31
commit
b70974b28f
@ -23,7 +23,11 @@ def exec():
|
|||||||
for jskult_archive_manage_data in jskult_archive_manage_data_list:
|
for jskult_archive_manage_data in jskult_archive_manage_data_list:
|
||||||
# 対象テーブルで条件項目が条件年月以前のデータを取得
|
# 対象テーブルで条件項目が条件年月以前のデータを取得
|
||||||
archive_data = jskult_archive_manager.get_archive_data(
|
archive_data = jskult_archive_manager.get_archive_data(
|
||||||
jskult_archive_manage_data["target_table"], jskult_archive_manage_data["filter_column"], jskult_archive_manage_data["filter_date"])
|
jskult_archive_manage_data["target_table"],
|
||||||
|
jskult_archive_manage_data["filter_column_name"],
|
||||||
|
jskult_archive_manage_data["filter_column_type"],
|
||||||
|
jskult_archive_manage_data["filter_column_digit"],
|
||||||
|
jskult_archive_manage_data["filter_date"])
|
||||||
# 取得データが0件の場合、スキップする
|
# 取得データが0件の場合、スキップする
|
||||||
if not archive_data:
|
if not archive_data:
|
||||||
logger.info(
|
logger.info(
|
||||||
@ -60,7 +64,9 @@ def exec():
|
|||||||
# アーカイブしたデータをDBから削除
|
# アーカイブしたデータをDBから削除
|
||||||
jskult_archive_manager.delete_archive_data(
|
jskult_archive_manager.delete_archive_data(
|
||||||
jskult_archive_manage_data["target_table"],
|
jskult_archive_manage_data["target_table"],
|
||||||
jskult_archive_manage_data["filter_column"],
|
jskult_archive_manage_data["filter_column_name"],
|
||||||
|
jskult_archive_manage_data["filter_column_type"],
|
||||||
|
jskult_archive_manage_data["filter_column_digit"],
|
||||||
jskult_archive_manage_data["filter_date"])
|
jskult_archive_manage_data["filter_date"])
|
||||||
logger.info(
|
logger.info(
|
||||||
f"アーカイブしたデータのDBから削除に成功しました。対象テーブル:{jskult_archive_manage_data['target_table']} 条件年月:{jskult_archive_manage_data['filter_date']}")
|
f"アーカイブしたデータのDBから削除に成功しました。対象テーブル:{jskult_archive_manage_data['target_table']} 条件年月:{jskult_archive_manage_data['filter_date']}")
|
||||||
|
|||||||
@ -17,7 +17,9 @@ class JskultArchiveManager:
|
|||||||
sql = """
|
sql = """
|
||||||
select
|
select
|
||||||
target_table
|
target_table
|
||||||
, filter_column
|
, filter_column_name
|
||||||
|
, filter_column_type
|
||||||
|
, filter_column_digit
|
||||||
, filter_date
|
, filter_date
|
||||||
, run_interval_months
|
, run_interval_months
|
||||||
, prev_filter_date
|
, prev_filter_date
|
||||||
@ -35,17 +37,43 @@ class JskultArchiveManager:
|
|||||||
finally:
|
finally:
|
||||||
self._db.disconnect()
|
self._db.disconnect()
|
||||||
|
|
||||||
def get_archive_data(self,target_table:str, filter_column:str, filter_date:str):
|
def _filter_column_to_date(self,filter_column_name:str , filter_column_type:str, filter_column_digit:int):
|
||||||
|
""" filter_columnを日付型へ変換"""
|
||||||
|
try:
|
||||||
|
logger.info("処理開始:_filter_column_to_date")
|
||||||
|
if filter_column_type == 'date':
|
||||||
|
filter_column = filter_column_name
|
||||||
|
|
||||||
|
elif filter_column_type == 'varchar' and filter_column_digit == 8:
|
||||||
|
filter_column = f"str_to_date({filter_column_name},'%Y%m%d')"
|
||||||
|
|
||||||
|
elif filter_column_type == 'varchar' and filter_column_digit == 6:
|
||||||
|
filter_column = f"str_to_date(concat({filter_column_name} , '01'),'%Y%m%d')"
|
||||||
|
|
||||||
|
else:
|
||||||
|
raise Exception("条件項目データ型もしくは条件項目桁数が不正です。")
|
||||||
|
|
||||||
|
logger.info("処理終了:_filter_column_to_date")
|
||||||
|
return filter_column
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
logger.info("異常終了:_filter_column_to_date")
|
||||||
|
raise
|
||||||
|
|
||||||
|
def get_archive_data(self,target_table:str, filter_column_name:str, filter_column_type:str, filter_column_digit:int, filter_date:str):
|
||||||
"""アーカイブするデータを取得"""
|
"""アーカイブするデータを取得"""
|
||||||
try:
|
try:
|
||||||
logger.info("処理開始:get_archive_data")
|
logger.info("処理開始:get_archive_data")
|
||||||
|
|
||||||
|
filter_column = self._filter_column_to_date(filter_column_name, filter_column_type, filter_column_digit)
|
||||||
|
|
||||||
sql = f"""
|
sql = f"""
|
||||||
select
|
select
|
||||||
*
|
*
|
||||||
from
|
from
|
||||||
src07.{target_table}
|
src07.{target_table}
|
||||||
where
|
where
|
||||||
str_to_date({filter_column},'%Y%m%d') <= :filter_date;
|
{filter_column} <= :filter_date;
|
||||||
"""
|
"""
|
||||||
self._db.connect()
|
self._db.connect()
|
||||||
parameter_dict = {'filter_date' : filter_date}
|
parameter_dict = {'filter_date' : filter_date}
|
||||||
@ -58,15 +86,18 @@ class JskultArchiveManager:
|
|||||||
finally:
|
finally:
|
||||||
self._db.disconnect()
|
self._db.disconnect()
|
||||||
|
|
||||||
def delete_archive_data(self, target_table:str, filter_column:str, filter_date:str):
|
def delete_archive_data(self, target_table:str, filter_column_name:str, filter_column_type:str, filter_column_digit:int, filter_date:str):
|
||||||
"""アーカイブしたデータを削除"""
|
"""アーカイブしたデータを削除"""
|
||||||
try:
|
try:
|
||||||
logger.info("処理開始:delete_archive_data")
|
logger.info("処理開始:delete_archive_data")
|
||||||
|
|
||||||
|
filter_column = self._filter_column_to_date(filter_column_name, filter_column_type, filter_column_digit)
|
||||||
|
|
||||||
sql = f"""
|
sql = f"""
|
||||||
delete from
|
delete from
|
||||||
src07.{target_table}
|
src07.{target_table}
|
||||||
where
|
where
|
||||||
str_to_date({filter_column},'%Y%m%d') <= :filter_date;
|
{filter_column} <= :filter_date;
|
||||||
"""
|
"""
|
||||||
self._db.connect()
|
self._db.connect()
|
||||||
self._db.begin()
|
self._db.begin()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user