gpt4 book ai didi

python - 如何加快csv导入sql的速度?

转载 作者:行者123 更新时间:2023-11-29 15:42:07 30 4
gpt4 key购买 nike

这是 CS50 Web Project1 阶段,我必须导入 books.csv(包含 isbn、标题、作者和年份),其中包含 5000 行。问题是导入本身花费的时间太长(大约每秒 10 行),我认为这是不正常的。如何加快速度?

我创建了一个表,其中包含 isbn、标题、作者和年份行,全部采用 varchar 格式。我使用postgesql。接下来我编写了 import.py ,如下所示

import csv
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker


engine = create_engine(os.getenv("DATABASE_URL"))
db = scoped_session(sessionmaker(bind=engine))

def main():
f = open("books.csv")
reader = csv.reader(f)
for ISBN, title, author, year in reader:
db.execute("INSERT INTO books (ISBN, title, author, year) VALUES (:ISBN, :title, :author, :year)",
{"ISBN":ISBN, "title":title, "author":author, "year":year})
db.commit()

if __name__ == "__main__":
main()

我预计导入会在不到一分钟的时间内完成,但现在大约需要 30-40 分钟。

最佳答案

鉴于您观察到的性能(10 行/秒),我猜测对数据库的请求的延迟相当高(使用 ping 检查)。如果是这种情况,使用 INSERT .. VALUES (..), (..), (..) 在单个查询中插入多行应该会有很大帮助。

为此,您必须:

如果您的文件较大,我建议考虑使用 "COPY FROM"批量加载,但只有 5000 行时这样做是没有意义的。

关于python - 如何加快csv导入sql的速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57509366/

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