feat:カンマ削除処理の設定ファイル修正に伴う変更

This commit is contained in:
yuusuke_kanamura 2022-07-14 18:49:32 +09:00
parent fcdc50569b
commit 7a8700ac3e
2 changed files with 43 additions and 6 deletions

View File

@ -23,6 +23,14 @@ SETTINGS_ITEM = {
'storageSchemaName': 9,
'loadSchemaName': 10,
'exSqlFileName': 11,
'removeCommas': 12,
'reserved0': 13,
'reserved1': 14,
'reserved2': 15,
'reserved3': 16,
'reserved4': 17,
'reserved5': 18,
'reserved6': 19
}
LINE_FEED_CODE = {
'CR': '\r',

View File

@ -1,4 +1,5 @@
from datetime import datetime
import re
import boto3
import pymysql
from pymysql.constants import CLIENT
@ -23,6 +24,14 @@ SETTINGS_ITEM = {
'storageSchemaName': 9,
'loadSchemaName': 10,
'exSqlFileName': 11,
'replaceCommas': 12,
'reserved0': 13,
'reserved1': 14,
'reserved2': 15,
'reserved3': 16,
'reserved4': 17,
'reserved5': 18,
'reserved6': 19
}
LINE_FEED_CODE = {
'CR': '\r',
@ -76,12 +85,18 @@ def main(bucket_name, target_data_source, target_file_name, settings_key, db_inf
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-MAIN-03 - タイムゾーンを変更しました')
# ④ 個別設定ファイルのロードスキーマのテーブル名に記載されているテーブルをTRUNCATEする
# 個別設定ファイルの読み込み
settings_obj = s3_resource.Object(bucket_name, settings_key)
settings_response = settings_obj.get()
settings_list = []
for line in io.TextIOWrapper(io.BytesIO(settings_response["Body"].read()), encoding='utf-8'):
settings_list.append(line.rstrip('\n'))
# 予約行挿入のためsetting_listとSETTINGS_ITEMの要素数を揃える
for _ in range(len(SETTINGS_ITEM) - len(settings_list)):
settings_list.append('')
# ロードスキーマのTRUNCATE
with conn.cursor() as cur:
sql_truncate = f'TRUNCATE table {settings_list[SETTINGS_ITEM["loadSchemaName"]]}'
cur.execute(sql_truncate)
@ -100,6 +115,7 @@ def main(bucket_name, target_data_source, target_file_name, settings_key, db_inf
warning_info = '' # ワーニング情報
index = 0 # ループインデックス
settings_db_columu_list = settings_list[SETTINGS_ITEM["dbColumuName"]].rstrip().split(',')
settings_replace_comma_list = settings_list[SETTINGS_ITEM["replaceCommas"]].rstrip().split(',')
for line in csv.reader(work_data, quotechar=settings_list[SETTINGS_ITEM["quotechar"]], delimiter=settings_list[SETTINGS_ITEM["delimiter"]]):
try:
@ -125,13 +141,15 @@ def main(bucket_name, target_data_source, target_file_name, settings_key, db_inf
sql = f'{sql} VALUES ('
for i in range(len(line)):
# データ項目値が0桁より大きいかチェックする
if len(line[i]) > 0:
# 0桁より大きい場合
replace_line = line[i].replace('\\', '\\\\')
sql = f'{sql} "{replace_line}",'
else:
# 上記以外の場合
if len(line[i]) == 0:
# 0桁の場合
sql = f'{sql} NULL,'
continue
# データ項目値の変換処理
column_value = replace_column_value(line,settings_db_columu_list,settings_replace_comma_list,i)
sql = f'{sql} "{column_value}",'
sql = f'{sql} "{target_file_name}",' # システム項目:取込ファイル名
sql = f'{sql} "{index + 1}",' # システム項目:取込ファイル行番号
sql = f'{sql} "0",' # システム項目:論理削除フラグ
@ -272,3 +290,14 @@ def connection_close(conn, bucket_name, target_data_source, target_file_name, lo
except Exception as e:
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["e"]} E-MAIN-99 - エラー内容:{e}')
error(bucket_name, target_data_source, target_file_name, log_info)
def replace_column_value(line,settings_db_columu_list,settings_replace_comma_list,i):
org_column_value = line[i]
# 投入データのDB物理カラム名が設定ファイルの数値型のDBカラム物理名に含まれている場合
if settings_db_columu_list[i] in settings_replace_comma_list:
org_column_value = org_column_value.replace(',', '')
org_column_value = org_column_value.replace('\\', '\\\\')
return org_column_value