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

Откуда: Запорожье
Сообщений: 40047
Есть старая клипперная БД на 40 гб. Бухучет предприятия до 2007-ого года.
ПО к этой БД есть, но на вин-7 не запускается без dosbox, т.е. считаем, что его нет. Да и никто не помнит, как оно вообще работало.
Данные устарели, но раз в год кому-то может понадобится одна-две строки. Какие именно строки понадобятся в следующем году и понадобятся ли вообще, никто не знает.

В общем, приказали нам эти дбф-ки перегнать в Оракл. Пусть там лежат. Кому надо, и в Оракле найдёт.
Оракл 11.2.

100 тыщ дбф-ок.
Куча в основном похожих файлов – кредит, дебет, сальдо, журналы и прочая хрень каждого счета за каждый год.
Но сбивать все кредиты в одну таблицу не получится, т.к. файлы весьма похожие, но структура может отличаться.

Из этого НЕ НАДО делать реляционную БД.
Нужна гениальная идея:
- как всё это хранить
- чтобы место много не занимало
- легко искать произвольный текст. Например, как решали на днях: запустили ФАРом поиск по всем папкам и dbf-кам, искали ОКПО – код предприятия. Нашли несколько похожих таблиц, данные выгрузили в Эксель, пользователь остался доволен.

Варианты:
1. Сделать в отдельной схеме (нескольких схемах) 100 тыщ разных таблиц
Плюсы – проще всего – есть прога для заливки дбф в БД с созданием таблиц. Написать скрипт для заливки всех таблиц на основании результата dir - час времени. И 8 часов будет работать, пока не зальёт - и все затраты.
Минус – много таблиц получается и сложно искать в них произвольный текст.
Минус – ограничение на длину наименования таблицы. Полный путь не влезет в название таблицы.
2. Сделать EAV-таблицы. Основная таблица - Field_id, row_number, Value_строка, Value_Намбер, Value_дата.
Минусы: на каждое поле будет уходить много доп. места на Field_id и row_number.
3. Хранить каждую таблицу отдельной строкой в XML или JSON. Сделать общую таблицу из трех основных полей: Название таблицы с полным путём, CLob с данными, sql-запрос для получения данных. Полнотекстово проиндексировать.
Минус – куча места будет уходить под название атрибутов и прочую информацию.
12 фев 17, 23:10    [20205625]     Ответить | Цитировать Сообщить модератору
 Re: Клипперную БД интеллектуально перегнать в ОРакл  [new]
miksoft
Member

Откуда:
Сообщений: 35941
andreymx
3. Хранить каждую таблицу отдельной строкой в XML или JSON. Сделать общую таблицу из трех основных полей: Название таблицы с полным путём, CLob с данными, sql-запрос для получения данных. Полнотекстово проиндексировать.
Минус – куча места будет уходить под название атрибутов и прочую информацию.
А ежели в CSV ?
12 фев 17, 23:43    [20205693]     Ответить | Цитировать Сообщить модератору
 Re: Клипперную БД интеллектуально перегнать в ОРакл  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 40047
miksoft
А ежели в CSV?
надо обдумать, идея нравится
12 фев 17, 23:57    [20205718]     Ответить | Цитировать Сообщить модератору
 Re: Клипперную БД интеллектуально перегнать в ОРакл  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 40047
у XML есть плюс - из него селект можно написать
для селекта из CSV придётся парсер писать?
13 фев 17, 00:06    [20205726]     Ответить | Цитировать Сообщить модератору
 Re: Клипперную БД интеллектуально перегнать в ОРакл  [new]
miksoft
Member

Откуда:
Сообщений: 35941
andreymx
для селекта из CSV придётся парсер писать?
А зачем, если
andreymx
данные выгрузили в Эксель, пользователь остался доволен.
?

Раз в год можно данные кинуть в Excel или даже сконвертить в обычную таблицу, если нужно что-то сложное посчитать.
13 фев 17, 00:33    [20205768]     Ответить | Цитировать Сообщить модератору
 Re: Клипперную БД интеллектуально перегнать в ОРакл  [new]
кит северных морей
Member

Откуда: Красноярск
Сообщений: 399
сколько уникальных полей в 100к дбф-ок?
13 фев 17, 01:00    [20205792]     Ответить | Цитировать Сообщить модератору
 Re: Клипперную БД интеллектуально перегнать в ОРакл  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 40047
кит северных морей
сколько уникальных полей в 100к дбф-ок?
еще не считал
а зачем?
13 фев 17, 01:07    [20205797]     Ответить | Цитировать Сообщить модератору
 Re: Клипперную БД интеллектуально перегнать в ОРакл  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 40047
miksoft
andreymx
для селекта из CSV придётся парсер писать?
А зачем, если
andreymx
данные выгрузили в Эксель, пользователь остался доволен.
?
Раз в год можно данные кинуть в Excel или даже сконвертить в обычную таблицу, если нужно что-то сложное посчитать.
хорошая идея, подумаю
13 фев 17, 01:08    [20205799]     Ответить | Цитировать Сообщить модератору
 Re: Клипперную БД интеллектуально перегнать в ОРакл  [new]
кит северных морей
Member

Откуда: Красноярск
Сообщений: 399
andreymx
кит северных морей
сколько уникальных полей в 100к дбф-ок?
еще не считал
а зачем?

ну допустим тысяча. создайте одну таблицу на эту тысячу полей + 1 поле на идентифиактор исходного файла, загрузчиком заполняйте только те колонки, которые есть в файле. будет разреженная таблица. потом сверху прибить компрессией, если надо.
13 фев 17, 01:13    [20205804]     Ответить | Цитировать Сообщить модератору
 Re: Клипперную БД интеллектуально перегнать в ОРакл  [new]
Vladimir Baskakov
Member

Откуда:
Сообщений: 1540
кит северных морей
andreymx
пропущено...
еще не считал
а зачем?

ну допустим тысяча. создайте одну таблицу на эту тысячу полей + 1 поле на идентифиактор исходного файла, загрузчиком заполняйте только те колонки, которые есть в файле. будет разреженная таблица. потом сверху прибить компрессией, если надо.


согласен, но сложил бы не вообще все в вообще одну, а в 10ок похожих, - сальдо к сальдо, клиенты к клиентам. тогда каждая все же поменьше 1000 полей станет.

Или, хранить каждую строку ориг. таблиц в xml-json
13 фев 17, 10:24    [20206302]     Ответить | Цитировать Сообщить модератору
 Re: Клипперную БД интеллектуально перегнать в ОРакл  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 7688
Все файлы DBF положить на диск сервера БД.

Наделать из DBF'ов файлов CSV.

Написать скрипт/программу, который наделает 100 000 External Tables на 100 000 файлов CSV.

При редкой необходимости поиска чего-либо искать в файлах CSV/DBF обычным FAR'ом и/или SELECT'ом из External Tables.
13 фев 17, 17:00    [20208504]     Ответить | Цитировать Сообщить модератору
 Re: Клипперную БД интеллектуально перегнать в ОРакл  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 40047
SQL*Plus
Все файлы DBF положить на диск сервера БД.

Наделать из DBF'ов файлов CSV.

Написать скрипт/программу, который наделает 100 000 External Tables на 100 000 файлов CSV.

При редкой необходимости поиска чего-либо искать в файлах CSV/DBF обычным FAR'ом и/или SELECT'ом из External Tables.
предложение miksoft мне больше по душе - с хранением csv в блобах
13 фев 17, 18:54    [20208855]     Ответить | Цитировать Сообщить модератору
 Re: Клипперную БД интеллектуально перегнать в ОРакл  [new]
Vvche69
Member

Откуда:
Сообщений: 5
Из серии "пусть безумная идея, не рубайте сгоряча..."

Может, как-то вот чего заюзать:
https://en.wikipedia.org/wiki/Harbour_(software)
13 фев 17, 19:37    [20208933]     Ответить | Цитировать Сообщить модератору
 Re: Клипперную БД интеллектуально перегнать в ОРакл  [new]
dbpatch
Member

Откуда:
Сообщений: 123
andreymx
SQL*Plus
Все файлы DBF положить на диск сервера БД.

Наделать из DBF'ов файлов CSV.

Написать скрипт/программу, который наделает 100 000 External Tables на 100 000 файлов CSV.

При редкой необходимости поиска чего-либо искать в файлах CSV/DBF обычным FAR'ом и/или SELECT'ом из External Tables.
предложение miksoft мне больше по душе - с хранением csv в блобах


И зачем .csv хранить в блобах, если Oracle их (.CSV) умеет читать как свою родную таблицу?
Или синтаксиc создания EXTERNAL TABLE настолько сложен, а примеры не гуглятся?
14 фев 17, 18:10    [20211582]     Ответить | Цитировать Сообщить модератору
 Re: Клипперную БД интеллектуально перегнать в ОРакл  [new]
Vladimir Baskakov
Member

Откуда:
Сообщений: 1540
dbpatch
И зачем .csv хранить в блобах, если

Чтобы потом не пытаться мучительно понять в какой из сотен тысяч оракловых таблиц лежит то что нужно? это версия.
15 фев 17, 14:28    [20214245]     Ответить | Цитировать Сообщить модератору
 Re: Клипперную БД интеллектуально перегнать в ОРакл  [new]
хунтер
Guest
для 100 тыщ дбф-ок рентабельно отрезать от них заголовки ( все до первого перевода строки в файле) ,
скормить их скрипту , который по заголовкам сформирует
create table и par файлы для sqlldr
текст за хедерами скормить sqlldr-y
потом за отдельные деньги
селектами по каталогу
можно сформировать разряженные таблицы
и консолидировать.

Вы думаете это весь профит ?
никак нет
Разместить рекламу в инете ,
быстрая загрузка дбф- ников любой структуры в оракл , (не) дорого .
:)
15 фев 17, 19:15    [20215297]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить