Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 внешняя таблица с переменной длиной строк  [new]
spb_kostya
Member

Откуда: СПб
Сообщений: 199
Добрый вечер.

Скажите пожалуйста, можно ли средставами EXTERNAL TABLE представить в виде таблицы файл следующей структуры:
- файл генерируется из внешней программы одной очень авторитетной фирмы, менять его структуру нельзя
- файл НЕ содержит перевода строк (одна большая-большая строка, как бы бинарник)
- файл содержит несколько типов записей
- файл НЕ содержит никаких специальных символов окончания записи
- каждый тип записи имеют свою собственную длинну
- тип записи содержится в первых трех символах записи

то есть можно ли указать в ACCESS PARAMETERS каким-то образом, что если первые три символа такие-то, то длина строки такая-то, или это за гранью добра и зла??

например файл такой:
000HEADER FILE0011234567890  ffff   0010987654321  hhhh   003qwertyuiop003asdfghjklz999FOOTER
если разбить на строки для читабельности, то получится:
000HEADER FILE
0011234567890  ffff   
0010987654321  hhhh   
003qwertyuiop
003asdfghjklz
999FOOTER

а мне надо вынуть, например, только из записей типа 001 символы с 10-го по 15-ый

уж очень не хочется писать побайтовый обработчик файла...

Спасибо.
30 дек 10, 19:18    [10023938]     Ответить | Цитировать Сообщить модератору
 Re: внешняя таблица с переменной длиной строк  [new]
_Nikotin
Member

Откуда: СПб
Сообщений: 2965
spb_kostya,

Смотрите тут: SQL*Loader Control File Reference
30 дек 10, 19:34    [10023980]     Ответить | Цитировать Сообщить модератору
 Re: внешняя таблица с переменной длиной строк  [new]
spb_kostya
Member

Откуда: СПб
Сообщений: 199
Все-таки в SQL*Loader Control File Reference не нашел решения своей проблемы.

есть ACCESS PARAMETERS в которых можно указать что строки имеют переменную длину RECORDS VARIABLE, но далее надо указывать кол-во байтов, которые содержат длину строки.
а в моем случае первые три символа содержат код, по которому можно определить длину строки, но в самих данных он нигде не присутствует. это как-бы внешние константы.

получается, что стандартными средствами создания внешних таблиц такой файл не обработать :-(
12 янв 11, 13:32    [10059175]     Ответить | Цитировать Сообщить модератору
 Re: внешняя таблица с переменной длиной строк  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18373
Вам не лодырь, Вам парсер нужен.
Судя по интересу именно к external table, технически файл находится на сервере БД.
Можно реализовать как препроцессор с последующим выходом на лодыря.
Можно сделать в виде конвейерной функции - файл открывать, к примеру, как LOBFILE, парсить и пайпить результат.
Получится аналог external table.
12 янв 11, 13:38    [10059248]     Ответить | Цитировать Сообщить модератору
 Re: внешняя таблица с переменной длиной строк  [new]
bdsm_sql
Member

Откуда:
Сообщений: 948
думаю, можно преобразовать файл к нужному виду через какой-нибудь awk, и использовать препроцессор для external table (11g)
12 янв 11, 14:12    [10059583]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить