Загрузочное приложение Spring для запуска запросов parllel с несколькими соединениями jdbc - PullRequest
0 голосов
/ 12 октября 2018

Я ищу техническое решение для запроса данных из одной базы данных и загрузки их в базу данных SQL Server с помощью автономного приложения с загрузкой Java.

select a.student_id
max(decode(a.marks_limit, 99.99,100,null )) as max_marks,
b.student_city_code "NYC",
from student a, student_info b
where a.student_id=b.student_id
and a.student_id in (''a123,'b123','c123')
and  b.adress_modified > TO_TIMESTAMP('2018/09/13 10:13:18', 'YYYY/MM/DD HH:MI:SS')
group by a.student_id, b.student_city_code

Мы выполняем этот запрос оракула последовательно, и его получение 1часовое выполнение и ~ 30 миллионов записей для лучшего планирования результатов, чтобы разделить этот запрос на 3 аналогичных запроса, поэтому вместо использования в операторе планирования использовать = в каждом запросе, например a.student_id = "a123" в одном запросе и a.student_id =«b123» во втором запросе a.student_id = «b123» в третьем, я полагаю, что время в 1 час будет сокращено до ~ 20 минут при каждом выполнении запроса.

В качестве технического решения он планирует выполнять все несколько запросов параллельнои зафиксировать результаты для таблицы назначения параллельно с использованием пакетной потоковой передачи Oracle.Как я знаю, драйвер Oracle JDBC поддерживает потоковую передачу.Когда мы перебираем ResultSet, он загружает только строки fetchSize в память.

Помогите, пожалуйста, с примером кода, как динамически открыть несколько JDBC-соединений с исходным и целевым адресами и закрыть их после завершения процесса.Java8 имеет обширный пакет.Пожалуйста, предложите, если у вас есть лучшее решение для этого.

oracle-jdbc-con1     oracle-jdbc-con2        oracle-jdbc-con3
       |                   |                   |        
       |                   |                   | 
       V                   V                   V 
sql-jdbc-con1          sql-jdbc-con2         sql-jdbc-con3

1 Ответ

0 голосов
/ 12 октября 2018

Любой тип программы будет накладным.Кроме того, я предполагаю, что это одноразовое действие, для которого не требуется приложение.

Недавно мы перенесли пару таблиц с MySQL на MS SQL Server и, попробовав пару опций, использовали SSMA.

SSMA - это собственный инструмент MS Sql Server для доставки базы данных, схемы или таблиц издругие базы данных.При переносе, скажем, одной таблицы с сервера Oracle на сервер SQL, он также учитывает преобразование типов данных.

Все, что вам нужно, это - установить SSMA (только для Windows) - настроить источники данных источника и назначения - выбрать объекты базы данных в приложении Windows - щелкнуть миграцию

SSMA имеет свою собственную версию специально для Oracle OracleToSQL Вот вводная документация , однако вы найдете множество пошаговых руководств.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...