У меня есть файл, который нужно загрузить в реляционную базу данных.Каждая строка является записью, а первые три символа указывают, в какую таблицу ей нужно загружаться.Это само по себе было бы достаточно легко.Однако записи зависят от родителя, а записи не имеют естественных ключей.
Ниже приведен упрощенный пример:
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содержит адреса.Адреса "Mangrove Drive" и "Unknown Street" принадлежат Декстеру Моргану, а адреса "Evergreen Terrace" и "Red Bark Lane" принадлежат Гомеру Симпсону.
Я имел в виду создание искусственных ключейдля каждой записи.Я бы прочитал файл построчно, добавив ключ для каждой записи, а также добавив ключ родителя.Например:
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
(Фактические ключи не будут выглядеть так; они, вероятно, будут числовыми. Я просто выгляжу так, чтобы их было легче визуализировать.)
Этот метод работает.Тем не менее, реальные файлы, с которыми я работаю, огромны.Большинство файлов имеют более 5 миллионов строк.Переход от строки к строке занимает очень много времени.
Существует ли более быстрый способ загрузки этих данных в реляционную базу данных при одновременном отслеживании связей между различными записями?
СУБД IМне нужно сделать это на Oracle 11g, но меня также интересуют методы, независимые от базы данных.