powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Локальное сохранение данных в файл и их загрузка в другую БД
13 сообщений из 13, страница 1 из 1
Локальное сохранение данных в файл и их загрузка в другую БД
    #39761087
Roomon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Подскажите, пожалуйста, как оптимальнее решить задачу.

Есть две базы на разных серверах с разными подключениями.

Несколько раз в месяц прогоняю запросы в одной базе и формирую набор CSV файлов (в каждом несколько млн строк, весят около 200 МБ каждый).
Запрос выполняю через Oracle SQL Developer, нажимаю правой кнопкой на таблицу с результатом - далее Export, указываю параметры, путь и жду сохранения файла. Права в БД только на чтение.
Вопрос 1. Как написать скрипт, чтобы там указать путь сохранения и все параметры (тип файла, разделители, конец строки и т.д.)? (чтобы не делать лишних кликов каждый раз)

Далее эти файлы загружаю в другую БД, где есть права на создание таблиц. Нажимаю правой кнопкой на нужную таблицу - далее Import, выбираю файл, указываю параметры как при выгрузке и жду окончания загрузки.
Вопрос 2. Как написать скрипт, чтобы при его запуске данные загружались автоматически? (чтобы не делать лишних кликов каждый раз)

Вопрос 3. Есть ли какой-то более оптимальный способ передачи данных из одной БД в другую при условии, что права доступа остаются такие же какие есть?
...
Рейтинг: 0 / 0
Локальное сохранение данных в файл и их загрузка в другую БД
    #39761094
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roomon,

немного от версий зависит
а так export/import
напр
Exporting and Importing Between Different Database Releases
https://docs.oracle.com/database/121/SUTIL/GUID-BAA3B679-A758-4D55-9820-432D9EB83C68.htm#SUTIL110

....
stax
...
Рейтинг: 0 / 0
Локальное сохранение данных в файл и их загрузка в другую БД
    #39761095
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roomon,

copy
...
Рейтинг: 0 / 0
Локальное сохранение данных в файл и их загрузка в другую БД
    #39761097
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гугли "ETL tools for Oracle".
Тебе может подойти простой expdb/impdb или SQL*Loader.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Локальное сохранение данных в файл и их загрузка в другую БД
    #39761104
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roomon,

Для каждой операции, существует свой набор инструментов, который может его решать
Если вы выполняете операцию синхронизацию данных, то
существуют инструменты oralce, которые решают эти задачи.

1) oracle replication ( snapshot/MATERIALIZED VIEW)
2) expdp/impdp (exp/imp)
3) csv (sqlldr)
4) sql script
5) oracle transportable tablespace (tts)
6) logical standby
7) oracle data integrator
8) oracle golden gate
9) oracle data miner
10) oracle streams (устаревшее)
...
и так далее

Ответ зависит от:
1) какого типа базы данных у Вас являются Источником/Целью
2) Есть ли сеть между этими базами
3) Вам нужна синхронная/асинхронная репликация данных, если возможна задержка, то какая
4) Администраторы системы или базы данных у Вас более опытны (стоимость их работы)
5) Решения требуется универсальное для любого типа базы, или нет
6) Готов ли Ваш бизнес платить за дополнительные лицензии платных продуктов, и сколько
...

Что конкретно подходит для Вас, зависит от более точной постановки задачи
Приведите точную постановку задачи (с подробностями), что именно Вы хотите рещить.
Может вы пытаетесь решить совсем не ту задачу, которую нужно решать.
...
Рейтинг: 0 / 0
Локальное сохранение данных в файл и их загрузка в другую БД
    #39761110
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim LejninПриведите точную постановку задачи (с подробностями), что именно Вы хотите рещить.

імхо
хочет уйти от ГУИ (SQL Developer), переносить данные из таблиц скриптами

....
stax
...
Рейтинг: 0 / 0
Локальное сохранение данных в файл и их загрузка в другую БД
    #39761120
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax,

Решение зависит от точной постановки задачи
...
Рейтинг: 0 / 0
Локальное сохранение данных в файл и их загрузка в другую БД
    #39761194
Roomon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем за ответы.

Vadim Lejnin,
1. Как я написал, выгрузку делаю несколько раз в месяц.
2. Сети нет.
3. Задержка возможна. Сейчас она составляет несколько часов (путем загрузки-выгрузки CSV файлов) и это вполне устраивает.
4. Сейчас пока пытаюсь решить задачу собственными силами и с теми правами доступа, которые есть.
5. Пока речь про oracle, если это имеется ввиду под типом. Версии могут быть разные, но близкие.
6. Пока нет.

Опишу задачу подробно.
Работаю аналитиком (ближе к research, а не к системному аналитику). Копаюсь в разных данных, от обзоров рынков до анализа информационных систем (в т.ч. транзакционных). Зачастую аналитическая часть (в т.ч. дашборды) в различных системах работают криво и непонятно руководству. Поэтому пытаюсь посмотреть на исходные данные, правильно их очистить и сделать аналитику, понятную и нужную руководству. С получением доступа к БД всегда непросто, иногда удается выбить доступ на чтение таблиц, иногда получается достичь договоренности только о предоставлении выгрузок в формате CSV файлов.

Если анализ интересен, то периодически просят повторить его по свежим данным (т.е. обновить презентацию, или краткий табличный отчет). Руководство работает с месячными срезами обычно, но иногда просят сделать отчет по состоянию на вчера (поэтому задержка даже в несколько часов вполне устраивает). Приэтом зачастую просят проанализировать в данных какой-то новый аспект, доработать отчет.

У каждой системы существует исполнитель в лице ИТ-компании подрядчика и внутреннее подразделение, которое курирует систему. Но они, как правило, заняты в первую очередь бесперебойностью работы системы и доработкой кучи внутренних вещей (в т.ч. интерфейсных). На широкий, свежий взгляд со стороны у них не остается времени. Наверное поэтому и аналитическая часть у них работает криво. Моё же руководство пытается смотреть не только на одну сферу, но и на все сферы вместе, сравнивать данные из различных систем и источников. При этом нужны не только верхнеуровневые цифры, но и полная детализация до конкретных объектов (например, нужно сравнить какие объекты есть в одной системе и нет в другой, и наоборот).

Мой опыт показывает, что 90% аналитических отчетов в различных системах "мертворожденные", ими никто не пользуется. И это связано с тем, что сначала пишут ТЗ, пилят разработку, а уже потом начинают анализировать сами данные по тем отчетам, которые получились. В результате вылезает много несостыковок.
Кроме того, когда отчет запилили оказывается, что он нужен был только на один раз и больше его никто, даже ежемесячно не смотрит.

Поэтому в нашем подразделении мы используем следующий подход:
1. Получаем доступ к данным (БД или CSV).
2. Анализируем ошибки и очищаем данные. В случае работы с CSV проходит несколько итераций (иногда выгружают не всё или совсем не то).
3. Пишем свои скрипты формирования табличных отчетов, выгружаем из в EXCEL + рисуем презентации на их основе.
4. Презентуем руководству, дорабатываем на основе пожеланий, которые возникают только после взгляда уже на конкретные цифры.
5. Дополняем отчет в случае каких-то новых событий или нового фокуса в организации (когда нужно посмотреть на явление с новой стороны).
6. В случае если какой-то отчет пользуется спросом несколько периодов подряд и возникает потребность в его регулярном мониторинге, делаем полную автоматизацию отчетов и интеграцию систем силами ИТ-компании подрядчика.

Но полная автоматизация это всегда долгая история: нужно сформировать ТЗ, разыграть новый тендер, + несколько месяцев на разработку и отладку (чтобы он наконец стал сходится с тем, что мы готовили "на коленке" относительно "вручную"). Когда речь идет об ежемесячной аналитике, на мой взгляд, в такой автоматизации редко бывает смысл, хотя и делают её относительно часто.

Надеюсь, достаточно подробно описал стоящие задачи =)

Если возвращаться к конкретике:
1. Stax прав. Хочу уйти от ГУИ. Например, по одной из задач приходят 30 CSV файлов, строчки из которых надо добавить в соответствующие 30 таблиц. Приходится кликнуть на каждую из таблиц, выбрать файл, выбрать разделители, указать столбцы и т.д. То есть на каждую таблицу нужно около 20 кликов (монтонные действия, в которых к тому же легко ошибиться) + постоянно мониторить, что один файл загрузился и запускать следующий. Вместо этого хотелось бы класть файлы с подходящими названиями в нужную папку на локальном компе, а дальше запускать скрипт, которые будет все делать за меня.
2. В случае, когда я работаю с другими БД хотелось бы более быстрый способ выгрузки-загрузки. Файл csv выгружается довольно быстро, а вот грузится порой долго (например, 1 млн записей на 200 мб, иногда грузится около 1 часа). При этом у меня пока нет возможности положить файл на сервер и уже с сервера загружать в БД.
...
Рейтинг: 0 / 0
Локальное сохранение данных в файл и их загрузка в другую БД
    #39761197
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roomon,

В вашем случае, я бы использовал sql*loader

Пример использования

+ скрипт который будет генерировать controlfile

на bash - пишется элементарно, скорее всего можно и на cmd или PowerShell, тут в общем то ничего сложного, при условии, что у Вас есть возможность получить структуру таблицы, например из словаря для существующих таблиц.

Если таблицы нет,парсинг первой строки даст информация о полях, но однозначно определить тип данных csv достаточно проблематично
...
Рейтинг: 0 / 0
Локальное сохранение данных в файл и их загрузка в другую БД
    #39761216
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рассмотрите вариант применения ETL-инструментов.
Из бесплатных - та же hitachi vantra (бывшая pentaho) содержит движок kettle и рисовалку spoon.
До кучи можете найти интересными и OLAP-инструменты из того же комплекта.
...
Рейтинг: 0 / 0
Локальное сохранение данных в файл и их загрузка в другую БД
    #39761298
Roomon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем за советы.

Vadim Lejnin,
похоже это то, что нужно. Буду разбираться. Правда пока не совсем понял, зачем controlfile скриптом генерить. Пока планирую класть в ту же папку файлы с такими же названиями, но с новыми данными внутри. Скрипт, как я понял не поменяется. В крайнем случае автозаменой текста можно обходиться. В любом случае первую итерации загрузки новых видов я буду делать вручную и отсматривать глазами, что всё корректно легло в базу.

Еще вопрос о быстродействии выгрузки-загрузки локальных файлов. Сформулирую его на условном примере. Есть 2 CSV файла, одинакового вида и размера, но с данными за разные периоды. Должна ли быть существенная разница в скорости загрузки у следующих 3 вариантов:
1. Загружаю 1-й файл, потом 2-й.
2. Открываю 2 раза SQL Developer на одном и том же компе и в каждом окне гружу файлы параллельно (то есть 2 сессии под одним и тем же пользователем).
3. Загружаю 1-й файл с одного компа, а 2-й файл параллельно с другого компа.
...
Рейтинг: 0 / 0
Локальное сохранение данных в файл и их загрузка в другую БД
    #39761416
Александр Спелицин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roomon Вопрос 3. Есть ли какой-то более оптимальный способ передачи данных из одной БД в другую при условии, что права доступа остаются такие же какие есть?
Конечно же есть. Это Oracle DBlink
...
Рейтинг: 0 / 0
Локальное сохранение данных в файл и их загрузка в другую БД
    #39761623
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roomon Должна ли быть существенная разница в скорости загрузки у следующих 3 вариантов:
Разница может наблюдаться или не наблюдаться в зависимости от сочетания многочисленных факторов - особенности реализации процесса загрузки, особенности систем(ы), особенности сетевой среды, особенности сервера БД.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Локальное сохранение данных в файл и их загрузка в другую БД
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]