我有一组20个sqlite数据库(每个表50个,每DB大约有10万条记录)。 我想把这20个数据库合并成一个主数据库。 这个概念是要有一个附加的列,它指示记录适用于哪个域
例如:
表A
FRUIT | COLOR | SHAPE
----------------------
apple | red | round
banana| yellow | curved
表B
FRUIT | COLOR | SHAPE
----------------------
apple | red | round
banana| yellow | curved
表C
FRUIT | COLOR | SHAPE
----------------------
apple | red | round
banana| blue | straight
这些表(A、B和C)将合并为一个主表:
主表
FRUIT | COLOR | SHAPE | DOMAIN
---------------------------------
apple | red | round | 0b111
banana| yellow | curved | 0b110
banana| blue | straight| 0b001
我有文本文件格式的数据库(即标签分隔列表)。我使用Python将它们导入sqlite数据库。 我怎样才能最有效地进行这个合并过程
我有两个想法:
将第一个数据库导入主数据库。导入下一个数据库时,检查是否存在完整的记录。如果是,则对“适用性”列运行SQL更新查询。如果没有,请使用INSERT创建新记录
对于每种类型的表,在python中加载20个域表中的每一个,并查看每个域或子集上是否存在记录。然后将具有适用性的记录导入主数据库
我想知道是否有一个有效的方法来执行这些操作。由于每个数据库的大小以及必须多次执行此导入的要求,我需要尽可能加快该过程
对每个记录*域进行单独的选择和更新要比在内存中合并记录慢得多
将20个表加载到内存中。把内存中的记录列成完整的清单。批量插入数据库
可能合并的快速有效方法如下:
加载(键、值)—>(域代码,现在为空)设置为一组,并单独设置键->;将值放入域表字典
然后遍历(键,值)集合,在每个域字典中查找值,并在主字典中形成域代码
然后遍历上一步的结果并执行批量插入,每1000条记录提交一次
相关问题 更多 >
编程相关推荐