Я ищу техническое решение для запроса данных из одной базы данных и загрузки их в базу данных 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