我有一个需要加载到关系数据库的文件。每行都是一条记录,前三个字符表示 它需要加载到哪个表。仅此一点就足够了。但是,记录取决于父母, 并且记录没有自然键。
以下是一个简化示例:
001|Morgan|Dexter
002|235 Mangrove Drive|Miami|FL
002|5570 Unknown Street|Dade City|FL
001|Simpson|Homer
002|742 Evergreen Terrace|Springfield|??
002|712 Red Bark Lane|Henderson|NV
001表保存人,0002表保存地址。 “红树林驱动器”和“未知街道”地址 属于Dexter Morgan,“Evergreen Terrace”和“Red Bark Lane”地址属于Homer Simpson。
我想到的是为每条记录生成人工密钥。我会逐行读取文件,添加 每条记录的密钥,还添加父密钥。例如:
001|PEOPLE1|Morgan|Dexter
002|PEOPLE1|ADDRESSES1|235 Mangrove Drive|Miami|FL
002|PEOPLE1|ADDRESSES2|5570 Unknown Street|Dade City|FL
001|PEOPLE2|Simpson|Homer
002|PEOPLE2|ADDRESSES3|742 Evergreen Terrace|Springfield|??
002|PEOPLE2|ADDRESSES4|712 Red Bark Lane|Henderson|NV
(实际的键看起来不像那样;它们可能是数字的。我只是让它看起来像那样,所以它是 更容易想象。)
此方法有效。但是,我正在使用的实际文件非常庞大。大多数文件都有超过500万行。走线 按行需要很长时间。
是否有更快的方法将这些数据加载到关系数据库,同时管理跟踪之间的关系 不同的记录?
我需要做的RDBMS是Oracle 11g,但我也对数据库无关的方法感兴趣。