Java 如何告诉初始数据加载只插入目标数据库中不存在的值?

Java 如何告诉初始数据加载只插入目标数据库中不存在的值?,java,oracle11g,oracle-golden-gate,Java,Oracle11g,Oracle Golden Gate,我在一个表中有一些大数据,在另一个表中有一些小数据,是否有任何方法来运行金门的初始加载,以便两个表中的相同数据不会被更改,其余数据从一个表传输到另一个表。这需要用java编程。 1) 首先,您将读取数据库 2) 根据读取的数据决定必须在哪个表中添加哪些数据。 3) 执行更新/数据输入查询以向表提交数据。如果要使用GoldenGate运行初始加载: 目标表应为空 数据:确保目标表为空。不然的话, 可能是重复的行错误或现有行与 正在加载的行 如果不是空的,则必须处理冲突。例如,如果要插入的行已

我在一个表中有一些大数据,在另一个表中有一些小数据,是否有任何方法来运行金门的初始加载,以便两个表中的相同数据不会被更改,其余数据从一个表传输到另一个表。

这需要用java编程。 1) 首先,您将读取数据库 2) 根据读取的数据决定必须在哪个表中添加哪些数据。
3) 执行更新/数据输入查询以向表提交数据。

如果要使用GoldenGate运行初始加载:

  • 目标表应为空
数据:确保目标表为空。不然的话, 可能是重复的行错误或现有行与 正在加载的行

  • 如果不是空的,则必须处理冲突。例如,如果要插入的行已经存在于目标表中(INSERTROWEXISTS),则应该放弃它,如果您希望这样做的话
初始加载通常用于设置复制环境时;但是,您也可以在单个表上执行此操作。Oracle数据库中的所有内容都由系统更改编号/更改系统编号(SCN/CSN)驱动

通过使用SCN/CSN,您可以确定表中的起始点应该是什么,并从那里启动CDC。SCN/CSN之前的任何数据都不会被捕获,需要您以某种方式手动移动该数据。这可以通过使用Oracle数据泵(导出/导入)实现

OracleGoldengate还提供了一个名为SQLPredicate的参数,允许您对表使用“where”子句。这对于初始加载提取非常方便,因为您可以执行类似于TABLE.,SQLPredicate“as of”的操作。然后,在此之前的数据将被捕获并移动到目标端,以便replicat应用到表中。您可以在此处参考:

甲骨文官方文件:

在replicat方面,您可以使用HANDLECOLLISIONS来清除任何ducplicate。加载完成后,将其从参数文件中删除


很多细节,但我相信这对您来说是一个很好的起点。

很好的解释,我如何让SCN在初始负载结束后启动CDC?