我有大量 CSV 格式的数据。我需要能够基于单个文本字段(主键)索引这些数据,所以我正在考虑将其输入数据库。我对以前项目中的 sqlite 很熟悉,所以我决定使用那个引擎。
经过一些实验,我意识到在一个表中存储一亿条记录并不能很好地工作:索引步骤很快就会慢到爬行。对于这个问题,我可以想出两个解决方案:
- 将数据划分为多个表
- 将数据划分为多个数据库
我采用了第二种解决方案(它产生了几个大文件而不是一个大文件)。我的分区方法是看主键的前两个字符:每个分区大约有200万条记录,大约有50个分区。
我在 Python 中使用 sqlite3 模块执行此操作。在整个过程中,我保持 50 个打开的数据库连接和打开的游标。对于每一行,我查看主键的前两个字符,通过字典查找获取正确的游标,并执行单个插入语句(通过在游标上调用执行)。
不幸的是,插入速度在一段时间后仍然下降到无法忍受的水平(大约 1000 万条总处理记录)。我能做些什么来解决这个问题?有没有更好的方法来做我正在做的事情?