Python 在MySQL中快速插入10亿行

Python 在MySQL中快速插入10亿行,python,mysql,sql,Python,Mysql,Sql,我目前正试图在MySQL表中插入大约10亿行数据。我正在从一个.JSON文件目录中提取数据,其中每个.JSON文件包含~200K行。总共有5千个文件 我目前正在做的是遍历每个文件并创建一个元组,其中包含我要插入的行。我把这个元组放在一个列表中,在看完整个JSON文件后,我在MySQL中插入行列表。这比一次将每一行插入到SQL中要快,但这仍然要花费我3天多的时间,我没有多余的时间 我最初创建了一个列表,每个列表包含200000000行(生成速度很快),但在MySQL中插入太长时间。这就是为什么我不

我目前正试图在MySQL表中插入大约10亿行数据。我正在从一个.JSON文件目录中提取数据,其中每个.JSON文件包含~200K行。总共有5千个文件

我目前正在做的是遍历每个文件并创建一个元组,其中包含我要插入的行。我把这个元组放在一个列表中,在看完整个JSON文件后,我在MySQL中插入行列表。这比一次将每一行插入到SQL中要快,但这仍然要花费我3天多的时间,我没有多余的时间

我最初创建了一个列表,每个列表包含200000000行(生成速度很快),但在MySQL中插入太长时间。这就是为什么我不仅每200000行插入一行。有人对如何加快这一进程有什么建议吗

path = *path to my file*
for filename in glob.glob(os.path.join(path, '*.JSON')):
    myList = []
    with open(filename) as json_data:
        j = json.load(json_data)
        for i in j["rows"]:
            name = i["values"][0][0]
            age = i["values"][0][1]
            gender = i["values"][0][2]
            data = (**None**,name,age,gender)
            myList.append(data)
        cursor = conn.cursor()
        q = """INSERT INTO nordic_data values (%s,%s,%s,%s)"""
        cursor.executemany(q, myList)
        conn.commit()

有很多潜在的东西,但脑海中浮现出几个想法:

  • 将每个X插入换行到事务中
  • 从表中删除索引,插入X行,然后重新创建索引

  • 插入必须更新索引,因此每次插入都会修改表上的索引

    比较,阅读。在插入时禁用所有索引和约束。尝试使用多个线程/进程。提示:执行1个长插入查询比执行1000个短插入查询快。e、 g.
    插入北欧数据值(1,2,3,4)、(2,3,4,5)、(3,4,5,6)
    尝试过吗?我决定将所有6200个JSON文件转换为CSV文件。然后使用LOAD DATA INFILE将其放入MySQL中。