Merge pull request #488 feature-NEWDWH2021-1908 into develop
This commit is contained in:
commit
2960df679d
@ -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(
|
||||
|
||||
@ -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)
|
||||
|
||||
# 一括登録の場合、クエリ実行に成功したら、処理件数と成功件数は同じにする
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user