orgのテーブルにLOAD DATA LOCAL INFILEが通った

This commit is contained in:
x.azuma.m@nds-tyo.co.jp 2023-05-08 18:13:23 +09:00
parent aca85704da
commit 4226ad9db1
2 changed files with 4 additions and 7 deletions

View File

@ -23,13 +23,10 @@ class JjskDataLoadManager:
# orgをtruncate
db.execute(f"TRUNCATE TABLE {table_name_org};")
# load DATA local infileステートメント実行許可設定
db.execute("SET GLOBAL local_infile=on;")
# orgにload ※warningは1148エラーになるらしい
sql = f"LOAD DATA LOCAL INFILE '{src_file_name}' INTO TABLE {table_name_org} FIELDS TERMINATED BY '\\t' ENCLOSED BY \"'\" IGNORE 1 LINES;"
cnt = db.execute(sql)
logger.info(f'tsvデータをorgテーブルにLOAD : 件数({cnt})')
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
# TODO: INTO句とSELECT句はmapperに持たせてcondkeyで引っ張ってくるようにしたい

View File

@ -44,7 +44,7 @@ class Database:
host=self.__host,
port=self.__port,
database=self.__schema,
query={"charset": "utf8mb4"}
query={"charset": "utf8mb4", "local_infile": "1"},
)
self.__engine = create_engine(