Merge pull request #488 feature-NEWDWH2021-1908 into develop

This commit is contained in:
下田雅人 2025-06-02 08:40:13 +09:00
commit 2960df679d
2 changed files with 15 additions and 9 deletions

View File

@ -187,7 +187,7 @@ def check(bucket_name, target_data_source, target_file_name, settings_key, log_i
raise CheckError(
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 末尾行項目数チェック 正常終了')
f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {INFO} I-CHK-14 - C-3 末尾行項目数チェック 正常終了')
# ⑦ チェック処理終了ログを出力する
print(

View File

@ -480,9 +480,14 @@ def import_data_with_bulk(
load_schema_name = settings_list[SETTINGS_ITEM["loadSchemaName"]]
has_header = settings_list[SETTINGS_ITEM["headerFlag"]] or int(
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"]])
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"""
SET @file_row_cnt = 1;
@ -493,13 +498,14 @@ def import_data_with_bulk(
INTO TABLE {load_schema_name}
CHARACTER SET {MYSQL_CHARSET_CODE[settings_list[SETTINGS_ITEM["charCode"]]]}
FIELDS TERMINATED BY '{settings_list[SETTINGS_ITEM["delimiter"]]}'
ENCLOSED BY '{enclosed_by if enclosed_by != "'" else "\\'"}'
LINES TERMINATED BY '{LINE_FEED_CODE[settings_list[SETTINGS_ITEM["lineFeedCode"]]]}'
FIELDS TERMINATED BY {repr(settings_list[SETTINGS_ITEM["delimiter"]])}
ENCLOSED BY {repr(enclosed_by)}
LINES TERMINATED BY {repr(LINE_FEED_CODE[settings_list[SETTINGS_ITEM["lineFeedCode"]]])}
{'IGNORE 1 LINES' if has_header else ''}
({','.join([column for column in settings_db_columu_list])})
({','.join(variables)})
SET
-- 取込ファイル名
{','.join(sets)},
-- 取込ファイル名
file_name = %s,
-- 取込ファイル行番号
file_row_cnt = (@file_row_cnt := @file_row_cnt + 1),
@ -528,7 +534,7 @@ def import_data_with_bulk(
conn.commit()
except Exception as e:
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)
# 一括登録の場合、クエリ実行に成功したら、処理件数と成功件数は同じにする