日付データがtsvでブランクだったとき、LOAD文で'0000-00-00'に変換されてしまう問題の対処
This commit is contained in:
parent
7a1941a7bc
commit
6cbee0e8ba
@ -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:
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user