Базы данных и их таблицы гарантированно идентичны.Одна база данных будет действовать как «основная» и импортировать данные из других баз данных в себя.Сейчас мне это удалось, но я вручную создал запрос на вставку очень архаичным способом:
- Я выполняю запрос к одной базе данных, используя конечную точку, такую как
sql:file:somefile.sql?dataSource=dataSource1&outputHeader=result
. - Я повторяю результирующий набор запросов на вставку данных и конструкций для каждой строки и вставляю их в базу данных master.
split(header("result"))
.to("direct:handleSingleRow")
.end()
Именно так я сейчас и поступаю при обработке отдельных строк, где всеИмена столбцов и значения извлекаются из результирующего набора строка за строкой:
String insertQuery = String.format("INSERT INTO %s.%s (%s) VALUES (%s)", schema, tableName, columns, join(", ", parsedRowValues.values()));
В результате получается что-то вроде INSERT INTO public.table (columnone, columntwo) VALUES (1, 2)
.
Затем я передаю этот запрос моей "основной" базе данных, напримеритак
sql:INSERT INTO public.table (columnone, columntwo) VALUES (1, 2)?dataSource=master
Есть ли лучший способ сделать это с помощью Camel?Я не хочу использовать hibernate и POJO, потому что я хочу, чтобы конечный пользователь мог поместить файлы sql в папку, и они будут выполнены.Есть ли способ просто взять один набор результатов из запроса и ввести его в следующий?
Оптимально я хотел бы сделать это:
to("sql:file:query.sql?dataSource=dataSource1&outputHeader=result")
.to("sql:?inputHeader=result")
Какой самый чистый способ копирования данныхиз одной базы данных в другую, используя Camel?Как я могу улучшить свое текущее решение?