From 72e0a18431dac05cb0ec9d2c861c06bb26d15092 Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Wed, 14 May 2025 14:03:35 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9C=AB=E5=B0=BE=E8=A1=8C=E3=81=AFcsv?= =?UTF-8?q?=E3=83=A9=E3=82=A4=E3=83=96=E3=83=A9=E3=83=AA=E3=82=92=E4=BD=BF?= =?UTF-8?q?=E3=81=A3=E3=81=A6=E8=AA=AD=E3=81=BF=E8=BE=BC=E3=82=80=E3=80=82?= =?UTF-8?q?=E5=8D=98=E7=B4=94=E3=81=AB=E3=82=B9=E3=83=97=E3=83=AA=E3=83=83?= =?UTF-8?q?=E3=83=88=E3=81=97=E3=81=9F=E5=A0=B4=E5=90=88=E3=81=AB=E3=82=AB?= =?UTF-8?q?=E3=83=A9=E3=83=A0=E5=86=85=E3=81=AE=E3=82=AB=E3=83=B3=E3=83=9E?= =?UTF-8?q?=E3=82=92=E5=88=A4=E5=88=A5=E3=81=A7=E3=81=8D=E3=81=AA=E3=81=84?= =?UTF-8?q?=E3=81=9F=E3=82=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecs/dataimport/dataimport/chk.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) 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 末尾行項目数チェック 正常終了')