【问题标题】:Using python to insert a large csv file into mysql table [duplicate]使用python将一个大的csv文件插入mysql表[重复]
【发布时间】:2021-06-26 19:15:10
【问题描述】:

我有一个工作流程,我需要获取 500k 行 csv 并将其导入 mysql 表。我有一个似乎可以工作的 python 脚本,但是当我选择它时,没有数据被保存到实际表中。我正在删除并重新创建表头,然后尝试批量插入 csv 文件,但它看起来不像数据正在进入。运行时 python 控制台中没有报告错误。

脚本运行大约需要 2 分钟,这让我觉得它正在做某事,但是当我从表本身中选择 * 时,除了列标题之外我什么也没得到。

我的脚本大致如下:

import pandas as pd
import mysql.connector

dataframe.to_csv('import-data.csv', header=False, index=False)

DB_NAME = 'SCHEMA1'
TABLES = {}
TABLES['TableName'] = (
"CREATE TABLE `TableName` ("
"`x_1` varchar(10) NOT NULL,"
"`x_2` varchar(20) NOT NULL,"
"PRIMARY KEY (`x_1`)"
") ENGINE = InnoDB")

load = """
LOAD DATA LOCAL INFILE 'import-data.csv'
INTO TABLE SCHEMA1.TableName
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
"""

conn = mysql.connector.connect(
    host=writer_host,
    port=port,
    user=username,
    password=password,
    database=username,
    ssl_ca=cert_path
) 

cursor = conn.cursor(buffered=True)
cursor.execute("DROP TABLE IF EXISTS SCHEMA1.TableName")
cursor.execute(TABLES['TableName'])
cursor.execute(load)
cursor.close()
conn.close()

【问题讨论】:

标签: python mysql mysql-connector-python


【解决方案1】:

执行命令后丢失提交

cursor.commit()

【讨论】:

  • 谢谢,就是这样。我在关闭光标和连接之前添加了conn.commit(),它按预期工作。
猜你喜欢
  • 2016-09-06
  • 2019-09-17
  • 1970-01-01
  • 1970-01-01
  • 2021-05-08
  • 2020-07-09
  • 1970-01-01
  • 1970-01-01
  • 2018-11-27
相关资源
最近更新 更多