【发布时间】:2019-10-31 02:40:39
【问题描述】:
我在拆分 bulk-insert 的值时遇到问题,因为我的想法是每次每 10 个值插入 1 个并读取 CSV 文件的全部内容
代码已经插入到读取整个 CSV 文件的单行中,但我无法执行 VALUES 的除法,以防将来一次执行 10000 个值的插入。
def bulk_insert(table_name, **kwargs):
mysqlConnection = MySqlHook(mysql_conn_id='id_db')
a = mysqlConnection.get_conn()
c = a.cursor()
with open('/pasta/arquivo.csv') as f:
reader = csv.reader(f, delimiter='\t')
sql ="""INSERT INTO user (id,user_name) VALUES"""
for row in reader:
sql +="(" + row[0] + " , '" + row[1] + "'),"
c.execute(sql[:-1])
a.commit()
【问题讨论】:
-
我建议只使用 MySQL 的
LOAD DATA批量插入工具。无需重新发明轮子并尝试从 Python 脚本手动执行此操作。 -
该脚本是 ETL 的一部分,它从一个数据库执行 SQL,导出为 CSV,然后将其插入另一个数据库。如果我为 LOAD DATA 执行此操作,我将无法按顺序拆分插入次数。
标签: python mysql csv sql-insert