我目前正在尝试在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()
答案 0 :(得分:1)
有许多潜在的东西,但有一些想法浮现在脑海中:
插入必须更新索引,因此每个插入都在修改表上的索引。