feat: develop-6crmでの追加分をマージ(main処理以外)

This commit is contained in:
shimoda.m@nds-tyo.co.jp 2022-09-16 13:08:17 +09:00
parent f78fb03d98
commit d11c5ccb49
2 changed files with 43 additions and 7 deletions

View File

@ -1,11 +1,13 @@
from datetime import datetime
import boto3
import io
import csv
import io
import sys
from datetime import datetime
import boto3
from common import convert_quotechar, debug_log
from end import end
from error import error
from common import debug_log
# 定数
DIRECTORY_WORK = '/work/'
@ -23,7 +25,7 @@ SETTINGS_ITEM = {
'storageSchemaName': 9,
'loadSchemaName': 10,
'exSqlFileName': 11,
'reserved0': 12,
'commaReplaceColumns': 12,
'importManner': 13,
'reserved1': 14,
'reserved2': 15,
@ -83,13 +85,13 @@ def check(bucket_name, target_data_source, target_file_name, settings_key, log_i
work_response = work_obj.get()
work_data = io.TextIOWrapper(io.BytesIO(work_response["Body"].read()), encoding=settings_list[SETTINGS_ITEM["charCode"]], newline=LINE_FEED_CODE[settings_list[SETTINGS_ITEM["lineFeedCode"]]])
work_header_list = []
for line in csv.reader(work_data, quotechar=settings_list[SETTINGS_ITEM["quotechar"]], delimiter=settings_list[SETTINGS_ITEM["delimiter"]]):
for line in csv.reader(work_data, quotechar=convert_quotechar(settings_list[SETTINGS_ITEM["quotechar"]]), delimiter=settings_list[SETTINGS_ITEM["delimiter"]]):
work_header_list = line
break
# ② C-0のデータ件数チェックを開始する
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-CHK-02 - C-0のチェックを開始します')
if not len(work_header_list):
if is_empty_file(work_header_list, settings_list):
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-CHK-03 - 投入ファイルが0バイトのため処理を終了します')
end(bucket_name, target_data_source, target_file_name, '', log_info, mode)
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-CHK-04 - 終了処理完了')
@ -122,3 +124,22 @@ def check(bucket_name, target_data_source, target_file_name, settings_key, log_i
except Exception as e:
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["e"]} E-CHK-99 - エラー内容:{e}')
error(bucket_name, target_data_source, target_file_name, log_info)
def is_empty_file(work_header_list: list, settings_list: list):
"""② C-0のデータ件数チェック
ヘッダ行がある場合は1行目を読み飛ばして判定する
Args:
work_header_list (list): CSVファイルの1行目
settings_list (list): 個別設定ファイルのリスト
Returns:
bool: CSVファイルの1行目が0件だった場合はTrue
"""
has_header = settings_list[SETTINGS_ITEM["headerFlag"]]
# ヘッダのみのファイルも0バイトファイルをみなす
if has_header:
return len(work_header_list[1:]) == 0
return len(work_header_list) == 0

View File

@ -11,3 +11,18 @@ MODE_TYPE = {
def debug_log(log, log_info, mode):
if MODE_TYPE['d'] == mode:
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["d"]} {log}')
def convert_quotechar(quotechar):
"""csvモジュールの囲い文字を変換する
Args:
quotechar : 項目囲い文字の設定値
Returns:
空文字空白文字の場合None
それ以外設定値をそのまま帰す
"""
if (quotechar.strip(' ') == ''):
return None
return quotechar