Знатоки oracle, отзовитесь
Apr. 12th, 2006 08:24 amЕсть некий файл, который надо загрузить в базу данных.
В файле есть 2 различных видов записи, какая запись перед нами можно понять по первому полю файла.
Я сделал 2 таблицы и написал SQLLoader control file, который вполне прилично грузит записи по соответствующим файлам.
Проблема в том, что записи первого рода являются заголовками для серии (переменного размера) записей второго рода. Никаких данных, позволяющих провести связывание, во вторых записях нет. А связать нужно.
Первый вариант - вставлять в базу номер строки в исходном файле. Теоретически должно было бы работать, но тут у меня небольшое осложнение. Я пишу файлы не replace, а append, т.е. к моменту загрузки очередного файла в таблицах могут уже находиться строки из предыдущих файлов.
Т.е. для этого варианта мне не хватает какого-нибудь идентификатора файла (факта загрузки).
Теоретически для этого можно было бы использовать текущую дату, но по понятным причинам (2 загрузки в 1 день, загрузка ровно в полночь и т.п.) мне это не нравится.
Другой вариант - вставлять ещё и некий глобальный (в пределах одной таблицы) sequence number, позволяющий отделять группы линий, относящихся к одному файлу. Это не работает, если придёт файл только с записями первого рода.
Какой-нибудь совершенно другое решение?
no subject
Date: 2006-04-12 07:20 am (UTC)Или я что-то не понимаю?
no subject
Date: 2006-04-12 08:15 pm (UTC)Похоже, это и есть решение, что мне нужно. Проверю завтра, спасибо!
no subject
Date: 2006-04-22 12:20 pm (UTC)Вопрос наверняка в FAQ какого-нибудь fido7.oracle.ru :-)
no subject
Date: 2006-04-24 02:02 pm (UTC)no subject
Date: 2006-04-24 02:29 pm (UTC)То есть лочить ничего не нужно, секвенсы и так работают как тебе нужно. Короче, секвенсы - это очень круто :)
offtopic
Date: 2006-04-18 03:32 pm (UTC)moj telefon: +972.52.680.1078