我有一个非常大的数据集,表A中的每一行都指向表B中的很多行。在生成CSV文件时,我需要以某种方式显示这种关系,但我没有一个基于整数的pkey。 A中的每个项目都有一个唯一的用户名,表B也是如此(即表B有自己唯一的名称)。
如果重要的话,我正在使用Python和Postgres。 另外注意,两个表都是50-100M +行,每行大约8列。
是否有构建此CSV文件的良好策略?
答案 0 :(得分:2)
您说每行都有一个唯一的名称。如果它们确实是唯一的,那么您可以将它们用作表格的键。您不需要基于整数的键。
例如,文件的路径可以被视为唯一标识符(对于全部位于同一目录/存储库中的文件。)因此,这可能是文件的密钥。
如果不指定唯一的整数键,导入将更容易。我建议先导入,然后选择添加整数键。
导入:将数据放入CSV文件,每个表一个文件。然后以正确的顺序将它们导入目标数据库。 (如果我理解你的结构正确,第一个就是Repository表,因为Commits和Changes都引用它。)
向现有表添加整数键:向需要整数键的每个表添加自动编号列。所以每个父行现在都有它的原始唯一名称和整数ID。然后,您可以使用SQL命令将子表中的每个父名称替换为相应的内部键,然后在不再需要时删除额外的名称列。