|
Локальное сохранение данных в файл и их загрузка в другую БД
|
|||
---|---|---|---|
#18+
Добрый день. Подскажите, пожалуйста, как оптимальнее решить задачу. Есть две базы на разных серверах с разными подключениями. Несколько раз в месяц прогоняю запросы в одной базе и формирую набор CSV файлов (в каждом несколько млн строк, весят около 200 МБ каждый). Запрос выполняю через Oracle SQL Developer, нажимаю правой кнопкой на таблицу с результатом - далее Export, указываю параметры, путь и жду сохранения файла. Права в БД только на чтение. Вопрос 1. Как написать скрипт, чтобы там указать путь сохранения и все параметры (тип файла, разделители, конец строки и т.д.)? (чтобы не делать лишних кликов каждый раз) Далее эти файлы загружаю в другую БД, где есть права на создание таблиц. Нажимаю правой кнопкой на нужную таблицу - далее Import, выбираю файл, указываю параметры как при выгрузке и жду окончания загрузки. Вопрос 2. Как написать скрипт, чтобы при его запуске данные загружались автоматически? (чтобы не делать лишних кликов каждый раз) Вопрос 3. Есть ли какой-то более оптимальный способ передачи данных из одной БД в другую при условии, что права доступа остаются такие же какие есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 18:11 |
|
Локальное сохранение данных в файл и их загрузка в другую БД
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 18:24 |
|
Локальное сохранение данных в файл и их загрузка в другую БД
|
|||
---|---|---|---|
#18+
Roomon, copy ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 18:24 |
|
Локальное сохранение данных в файл и их загрузка в другую БД
|
|||
---|---|---|---|
#18+
Гугли "ETL tools for Oracle". Тебе может подойти простой expdb/impdb или SQL*Loader. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 18:26 |
|
Локальное сохранение данных в файл и их загрузка в другую БД
|
|||
---|---|---|---|
#18+
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) Готов ли Ваш бизнес платить за дополнительные лицензии платных продуктов, и сколько ... Что конкретно подходит для Вас, зависит от более точной постановки задачи Приведите точную постановку задачи (с подробностями), что именно Вы хотите рещить. Может вы пытаетесь решить совсем не ту задачу, которую нужно решать. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 18:38 |
|
Локальное сохранение данных в файл и их загрузка в другую БД
|
|||
---|---|---|---|
#18+
Vadim LejninПриведите точную постановку задачи (с подробностями), что именно Вы хотите рещить. імхо хочет уйти от ГУИ (SQL Developer), переносить данные из таблиц скриптами .... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 18:47 |
|
Локальное сохранение данных в файл и их загрузка в другую БД
|
|||
---|---|---|---|
#18+
Stax, Решение зависит от точной постановки задачи ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 19:02 |
|
Локальное сохранение данных в файл и их загрузка в другую БД
|
|||
---|---|---|---|
#18+
Спасибо всем за ответы. 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 часа). При этом у меня пока нет возможности положить файл на сервер и уже с сервера загружать в БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2019, 00:28 |
|
Локальное сохранение данных в файл и их загрузка в другую БД
|
|||
---|---|---|---|
#18+
Roomon, В вашем случае, я бы использовал sql*loader Пример использования + скрипт который будет генерировать controlfile на bash - пишется элементарно, скорее всего можно и на cmd или PowerShell, тут в общем то ничего сложного, при условии, что у Вас есть возможность получить структуру таблицы, например из словаря для существующих таблиц. Если таблицы нет,парсинг первой строки даст информация о полях, но однозначно определить тип данных csv достаточно проблематично ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2019, 01:06 |
|
Локальное сохранение данных в файл и их загрузка в другую БД
|
|||
---|---|---|---|
#18+
Рассмотрите вариант применения ETL-инструментов. Из бесплатных - та же hitachi vantra (бывшая pentaho) содержит движок kettle и рисовалку spoon. До кучи можете найти интересными и OLAP-инструменты из того же комплекта. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2019, 03:55 |
|
Локальное сохранение данных в файл и их загрузка в другую БД
|
|||
---|---|---|---|
#18+
Спасибо всем за советы. Vadim Lejnin, похоже это то, что нужно. Буду разбираться. Правда пока не совсем понял, зачем controlfile скриптом генерить. Пока планирую класть в ту же папку файлы с такими же названиями, но с новыми данными внутри. Скрипт, как я понял не поменяется. В крайнем случае автозаменой текста можно обходиться. В любом случае первую итерации загрузки новых видов я буду делать вручную и отсматривать глазами, что всё корректно легло в базу. Еще вопрос о быстродействии выгрузки-загрузки локальных файлов. Сформулирую его на условном примере. Есть 2 CSV файла, одинакового вида и размера, но с данными за разные периоды. Должна ли быть существенная разница в скорости загрузки у следующих 3 вариантов: 1. Загружаю 1-й файл, потом 2-й. 2. Открываю 2 раза SQL Developer на одном и том же компе и в каждом окне гружу файлы параллельно (то есть 2 сессии под одним и тем же пользователем). 3. Загружаю 1-й файл с одного компа, а 2-й файл параллельно с другого компа. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2019, 10:40 |
|
Локальное сохранение данных в файл и их загрузка в другую БД
|
|||
---|---|---|---|
#18+
Roomon Вопрос 3. Есть ли какой-то более оптимальный способ передачи данных из одной БД в другую при условии, что права доступа остаются такие же какие есть? Конечно же есть. Это Oracle DBlink ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2019, 12:35 |
|
Локальное сохранение данных в файл и их загрузка в другую БД
|
|||
---|---|---|---|
#18+
Roomon Должна ли быть существенная разница в скорости загрузки у следующих 3 вариантов: Разница может наблюдаться или не наблюдаться в зависимости от сочетания многочисленных факторов - особенности реализации процесса загрузки, особенности систем(ы), особенности сетевой среды, особенности сервера БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2019, 16:43 |
|
|
start [/forum/topic.php?fid=52&fpage=87&tid=1882916]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 152ms |
0 / 0 |