fix: パフォーマンステスト実施中に発覚したバグを修正。ファイル内の空文字をNULLに変換。ログメッセージの不備を修正。
This commit is contained in:
parent
df3bee1be1
commit
0c5eab44c2
@ -187,7 +187,7 @@ def check(bucket_name, target_data_source, target_file_name, settings_key, log_i
|
|||||||
raise CheckError(
|
raise CheckError(
|
||||||
f'E-CHK-03 - 投入データ末尾の項目数が一致しません 個別設定ファイル項目数:{settings_list[SETTINGS_ITEM["csvNumItems"]]} 投入データ項目数:{last_line_count}')
|
f'E-CHK-03 - 投入データ末尾の項目数が一致しません 個別設定ファイル項目数:{settings_list[SETTINGS_ITEM["csvNumItems"]]} 投入データ項目数:{last_line_count}')
|
||||||
print(
|
print(
|
||||||
f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {INFO} I-CHK-09 - C-3 末尾行項目数チェック 正常終了')
|
f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {INFO} I-CHK-14 - C-3 末尾行項目数チェック 正常終了')
|
||||||
|
|
||||||
# ⑦ チェック処理終了ログを出力する
|
# ⑦ チェック処理終了ログを出力する
|
||||||
print(
|
print(
|
||||||
|
|||||||
@ -480,9 +480,14 @@ def import_data_with_bulk(
|
|||||||
load_schema_name = settings_list[SETTINGS_ITEM["loadSchemaName"]]
|
load_schema_name = settings_list[SETTINGS_ITEM["loadSchemaName"]]
|
||||||
has_header = settings_list[SETTINGS_ITEM["headerFlag"]] or int(
|
has_header = settings_list[SETTINGS_ITEM["headerFlag"]] or int(
|
||||||
settings_list[SETTINGS_ITEM["headerFlag"]]) == 1
|
settings_list[SETTINGS_ITEM["headerFlag"]]) == 1
|
||||||
settings_db_columu_list = settings_list[SETTINGS_ITEM["dbColumuName"]].rstrip(
|
|
||||||
).split(',')
|
|
||||||
enclosed_by = convert_quotechar(settings_list[SETTINGS_ITEM["quotechar"]])
|
enclosed_by = convert_quotechar(settings_list[SETTINGS_ITEM["quotechar"]])
|
||||||
|
settings_db_columu_list = settings_list[SETTINGS_ITEM["dbColumuName"]]\
|
||||||
|
.rstrip().split(',')
|
||||||
|
|
||||||
|
# データファイル内の空文字をNULLに変換するため、各カラムをパラメータ化
|
||||||
|
variables = [f"@{col_name}" for col_name in settings_db_columu_list]
|
||||||
|
sets = [f"`{col}` = NULLIF(@{col}, '')"
|
||||||
|
for col in settings_db_columu_list]
|
||||||
|
|
||||||
sql = f"""
|
sql = f"""
|
||||||
SET @file_row_cnt = 1;
|
SET @file_row_cnt = 1;
|
||||||
@ -493,13 +498,14 @@ def import_data_with_bulk(
|
|||||||
INTO TABLE {load_schema_name}
|
INTO TABLE {load_schema_name}
|
||||||
|
|
||||||
CHARACTER SET {MYSQL_CHARSET_CODE[settings_list[SETTINGS_ITEM["charCode"]]]}
|
CHARACTER SET {MYSQL_CHARSET_CODE[settings_list[SETTINGS_ITEM["charCode"]]]}
|
||||||
FIELDS TERMINATED BY '{settings_list[SETTINGS_ITEM["delimiter"]]}'
|
FIELDS TERMINATED BY {repr(settings_list[SETTINGS_ITEM["delimiter"]])}
|
||||||
ENCLOSED BY '{enclosed_by if enclosed_by != "'" else "\\'"}'
|
ENCLOSED BY {repr(enclosed_by)}
|
||||||
LINES TERMINATED BY '{LINE_FEED_CODE[settings_list[SETTINGS_ITEM["lineFeedCode"]]]}'
|
LINES TERMINATED BY {repr(LINE_FEED_CODE[settings_list[SETTINGS_ITEM["lineFeedCode"]]])}
|
||||||
{'IGNORE 1 LINES' if has_header else ''}
|
{'IGNORE 1 LINES' if has_header else ''}
|
||||||
({','.join([column for column in settings_db_columu_list])})
|
({','.join(variables)})
|
||||||
SET
|
SET
|
||||||
-- 取込ファイル名
|
{','.join(sets)},
|
||||||
|
-- 取込ファイル名
|
||||||
file_name = %s,
|
file_name = %s,
|
||||||
-- 取込ファイル行番号
|
-- 取込ファイル行番号
|
||||||
file_row_cnt = (@file_row_cnt := @file_row_cnt + 1),
|
file_row_cnt = (@file_row_cnt := @file_row_cnt + 1),
|
||||||
@ -528,7 +534,7 @@ def import_data_with_bulk(
|
|||||||
conn.commit()
|
conn.commit()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(
|
print(
|
||||||
f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {ERROR} 一括登録モードのSQL実行に失敗しました。エラー内容: {e}')
|
f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {ERROR} E-MAIN-02 - 一括登録モードのSQL実行に失敗しました。エラー内容: {e}')
|
||||||
error(bucket_name, target_data_source, target_file_name, log_info)
|
error(bucket_name, target_data_source, target_file_name, log_info)
|
||||||
|
|
||||||
# 一括登録の場合、クエリ実行に成功したら、処理件数と成功件数は同じにする
|
# 一括登録の場合、クエリ実行に成功したら、処理件数と成功件数は同じにする
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user