【发布时间】:2016-10-07 09:43:11
【问题描述】:
我有一组 20 个 sqlite 数据库(每个数据库 50 个表,每个数据库大约有 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 数据库中。 我将如何最有效地执行此合并过程?
我有两个想法:
将第一个 DB 导入主 DB。导入下一个数据库时,检查是否存在完整的记录。如果是,请在适用性列上运行 SQL UPDATE 查询。如果没有,请使用 INSERT 创建新记录。
对于每种类型的表,在 python 中加载 20 个域表中的每一个,并查看每个域或子集上是否存在记录。然后将具有适用性的记录导入到主数据库中。
我想知道是否有执行这些操作的有效方法。由于每个数据库的大小以及必须多次执行此导入的要求,我需要尽可能加快该过程。
【问题讨论】:
标签: python database performance sqlite