gpt4 book ai didi

python - 如何减少在 python 中追加到 SQL 数据库所需的时间

转载 作者:太空宇宙 更新时间:2023-11-03 16:40:40 25 4
gpt4 key购买 nike

我想向数据库追加大约 7 亿行和 2 列。使用下面的代码:

disk_engine = create_engine('sqlite:///screen-user.db')
chunksize = 1000000
j = 0
index_start = 1

for df in pd.read_csv('C:/Users/xxx/Desktop/jjj.tsv', chunksize=chunksize, header = None, names=['screen','user'],sep='\t', iterator=True, encoding='utf-8'):
df.to_sql('data', disk_engine, if_exists='append')
count = j*chunksize
print(count)
print(j)

这需要很长时间(我估计需要几天时间)。有没有更有效的方法来做到这一点?在R中,我一直使用data.table包来加载大数据集,只需要1分钟。 Python中有类似的包吗?作为切线点,我还想将此文件物理存储在我的桌面上。现在,我假设“数据”被存储为临时文件。我该怎么做?

另外假设我将数据加载到数据库中,我希望查询在一分钟或更短的时间内执行。以下是我想使用 Python + SQL 执行的一些伪代码:

#load data(600 million rows * 2 columns) into database
#def count(screen):
#return count of distinct list of users for a given set of screens

本质上,我正在返回给定用户组的屏幕数量。对于此任务来说,数据是否太大?我还想将此表与另一个表合并。 R 中的 fread 函数速度更快有什么原因吗?

最佳答案

如果您的目标是将数据从 TSV 文件导入到 SQLite,您应该尝试 SQLite 本身的 native 导入功能。只需打开 sqlite 控制台程序并执行如下操作:

sqlite> .separator "\t"
sqlite> .import C:/Users/xxx/Desktop/jjj.tsv screen-user

在执行任何查询之前,不要忘记构建适当的索引。

关于python - 如何减少在 python 中追加到 SQL 数据库所需的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36818388/

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