gpt4 book ai didi

python - 在 MySQL 中快速插入 10 亿行

转载 作者:行者123 更新时间:2023-11-29 10:41:05 26 4
gpt4 key购买 nike

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

我当前正在做的事情是遍历每个文件并创建一个包含我要插入的行的元组。我将此元组放入一个列表中,在浏览完整个 JSON 文件后,我将行列表插入 MySQL 中。这比一次将每一行插入 SQL 更快,但这仍然需要 3 天多的时间,而且我没有多余的时间。

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

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()

最佳答案

有很多潜在的东西,但我想到了一些想法:

  1. 将每个 X 插入包装到一个事务中。
  2. 从表中删除索引,插入 X 行,然后重新创建索引。

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

关于python - 在 MySQL 中快速插入 10 亿行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45473833/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com