日付データがtsvでブランクだったとき、LOAD文で'0000-00-00'に変換されてしまう問題の対処

This commit is contained in:
x.azuma.m@nds-tyo.co.jp 2023-05-10 13:22:40 +09:00
parent 7a1941a7bc
commit 6cbee0e8ba
2 changed files with 7 additions and 5 deletions

View File

@ -25,15 +25,17 @@ class JjskDataLoadManager:
db.execute(f"TRUNCATE TABLE {table_name_org};")
# orgにload ※warningは1148エラーになるらしい
sql = f"LOAD DATA LOCAL INFILE :src_file_name INTO TABLE {table_name_org}" \
sql = f"LOAD DATA LOCAL INFILE :src_file_name INTO TABLE {table_name_org} " \
" FIELDS TERMINATED BY '\\t' ENCLOSED BY '\"' IGNORE 1 LINES;"
result = db.execute(sql, {"src_file_name": src_file_name})
logger.info(f'tsvデータをorgテーブルにLOAD : 件数({result.rowcount})')
# org→srcにinsert select
db.begin()
result = db.execute(upsert_sql)
logger.info(f'orgテーブルをsrcテーブルにUPSERT : 件数({result.rowcount})')
db.execute(upsert_sql)
# TODO: insert+select 実質10件なのに、resultのrowcountは20件になってしまう ※sqlalchemyの仕様
# https://docs.sqlalchemy.org/en/14/core/connections.html#sqlalchemy.engine.BaseCursorResult.rowcount
logger.info('orgテーブルをsrcテーブルにUPSERT')
db.commit()
except Exception as e:

View File

@ -815,7 +815,7 @@ class VjskRecvFileMapper:
,t.PKG_CD
,t.PKG_NAME
,t.CNV_NUM
,t.JSK_START_DT
,nullif(t.JSK_START_DT, 0)
,t.PRD_SALE_KBN
,t.JSK_PROC_KBN
,t.START_DATE
@ -846,7 +846,7 @@ class VjskRecvFileMapper:
,PKG_CD=t.PKG_CD
,PKG_NAME=t.PKG_NAME
,CNV_NUM=t.CNV_NUM
,JSK_START_DT=t.JSK_START_DT
,JSK_START_DT=nullif(t.JSK_START_DT, 0)
,PRD_SALE_KBN=t.PRD_SALE_KBN
,JSK_PROC_KBN=t.JSK_PROC_KBN
,START_DATE=t.START_DATE