From 7a9293187fc9dd2f2368111575e7b56e969f4a10 Mon Sep 17 00:00:00 2001 From: "x.azuma.m@nds-tyo.co.jp" Date: Tue, 20 Jun 2023 18:16:01 +0900 Subject: [PATCH] =?UTF-8?q?LOAD=E6=96=87=E5=AE=9F=E8=A1=8C=E6=99=82?= =?UTF-8?q?=E3=81=ABWARNING=E3=81=8C=E7=99=BA=E7=94=9F=E3=81=97=E3=81=9F?= =?UTF-8?q?=E3=81=A8=E3=81=8D=E3=80=81WARNING=E5=86=85=E5=AE=B9=E3=82=92IN?= =?UTF-8?q?FO=E3=81=A7=E3=83=AD=E3=82=B0=E5=87=BA=E5=8A=9B=E3=81=97?= =?UTF-8?q?=E3=81=A6=E3=80=81=E4=BE=8B=E5=A4=96=E3=82=B9=E3=83=AD=E3=83=BC?= =?UTF-8?q?=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E6=94=B9=E4=BF=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/batch/vjsk/vjsk_data_load_manager.py | 10 +++++++++- .../tests/batch/vjsk/vjsk_load/test_vjsk_load.py | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_data_load_manager.py b/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_data_load_manager.py index 2d99951b..61f287c5 100644 --- a/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_data_load_manager.py +++ b/ecs/jskult-batch-daily/src/batch/vjsk/vjsk_data_load_manager.py @@ -27,7 +27,7 @@ class VjskDataLoadManager: # orgをtruncate db.execute(f"TRUNCATE TABLE {table_name_org};") - # orgにload ※warningは1148エラーになるらしい + # orgにload ※warningが発生すれば異常終了させる sql = f"""\ LOAD DATA LOCAL INFILE :src_file_name INTO TABLE {table_name_org} @@ -37,6 +37,14 @@ class VjskDataLoadManager: """ result = db.execute(sql, {"src_file_name": src_file_name}) logger.debug(sql) + # MEMO : sqlalchemy(engine=pymysql)としたときの result.context.cursor は、engineに依存してクラスが異なる + # https://nds-tyo.backlog.com/view/NEWDWH2021-1006#comment-266127218 + if result.context.cursor._result.warning_count > 0: + result_w = db.execute("SHOW WARNINGS;") + for row in result_w.fetchall(): + logger.info(f"SHOW WARNINGS : {row}") + raise Exception("LOAD文実行時にWARNINGが発生しました。") + logger.info(f'{data_name}tsvファイルを{table_name_org}にLOAD : 件数({result.rowcount})') # org→srcにinsert select diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py index a648724f..a5cfd370 100644 --- a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py @@ -1208,7 +1208,7 @@ class TestImportFileToDb: VjskDataLoadManager.load(target_dict) # 検証 - assert str(e.value).startswith("SQL Error:") > 0 + assert str(e.value).startswith("LOAD文実行時にWARNINGが発生しました。") > 0 # teardown