将任意数量的数据源同步到一个中央数据库

时间:2019-03-14 15:09:04

标签: database apache-camel integration

保证数据库及其表是相同的。一个数据库将充当“主数据库”,并将数据从其他数据库导入自身。现在,我已经成功地做到了这一点,但是我以一种非常古老的方式手动构造了一个插入查询:

  1. 我使用sql:file:somefile.sql?dataSource=dataSource1&outputHeader=result之类的端点对一个数据库执行查询。
  2. 我迭代结果数据集,并为每一行构造插入查询,然后插入到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?我不想使用休眠和POJO,因为我希望最终用户能够将sql文件放入文件夹中,然后将这些文件执行。有什么方法可以仅从请求中获取一个结果集并将其输入到下一个结果集?

理想情况下,我想这样做:

to("sql:file:query.sql?dataSource=dataSource1&outputHeader=result")
.to("sql:?inputHeader=result")

使用Camel将数据从一个数据库复制到另一个数据库的最干净方法是什么?如何改善当前的解决方案?

0 个答案:

没有答案