diff --git a/ecs/dataimport/dataimport/chk.py b/ecs/dataimport/dataimport/chk.py index 13e8f88b..87cdc9f9 100644 --- a/ecs/dataimport/dataimport/chk.py +++ b/ecs/dataimport/dataimport/chk.py @@ -174,11 +174,18 @@ def check(bucket_name, target_data_source, target_file_name, settings_key, log_i # ファイルの末尾行を取得し、ファイル項目数と比較する last_line_work_data_bytes = next(reverse_readline_stream( work_data_bytes, LINE_FEED_CODE[settings_list[SETTINGS_ITEM["lineFeedCode"]]])) - last_line_count = len( - last_line_work_data_bytes.decode(encoding).split(delimiter)) - if last_line_count != settings_list[SETTINGS_ITEM["csvNumItems"]]: + # 区切り文字(例えばカンマ)を文字とデリミタで区別できるように、csvリーダーで読む + last_line_separated_data = [ + row for row in csv.reader( + io.TextIOWrapper(io.BytesIO(last_line_work_data_bytes)), + quotechar=convert_quotechar( + settings_list[SETTINGS_ITEM["quotechar"]]), + delimiter=delimiter) + ] + last_line_count = len(last_line_separated_data[0]) + if last_line_count != int(settings_list[SETTINGS_ITEM["csvNumItems"]]): raise CheckError( - f'E-CHK-03 - 投入データ末尾の項目数が一致しません 個別設定ファイル項目数:{settings_list[SETTINGS_ITEM["csvNumItems"]]} 投入データ項目数:{last_line_work_data_bytes}') + f'E-CHK-03 - 投入データ末尾の項目数が一致しません 個別設定ファイル項目数:{settings_list[SETTINGS_ITEM["csvNumItems"]]} 投入データ項目数:{last_line_count}') print( f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {INFO} I-CHK-09 - C-3 末尾行項目数チェック 正常終了')