我有两个表,它们都位于不同的服务器上并且属于不同的架构。
表1 :SALARY_DETAIL_REPORT_[monthYearSuffix]
-表2的相同副本。
表2 :XXMPCD_SALARY_DETAIL_TABLE
-包含员工的薪水相关数据,每个员工具有多个薪酬代码,例如HOUSE RENT ALLOW,DEARNESS ALLOW, NPS-Company Contri(Earning), BASIC PAY, NET EARNING, GROSS DEDUCTION, GROSS EARNING, GROSS DEDUCTION, NET EARNING, BASIC PAY, GRADE PAY
。
因此,员工代码重复了多次,因此我们无法维护主键或唯一索引。
假设表2 中放入了1000条记录,我需要精确地复制到表1 中。这是由我的SPRING服务类处理的,有一个GUI,可以在其中单击迁移按钮,然后在后台运行的服务从表2 中获取数据并将其插入表1 < / strong>。
表2
中有两列1.PICK_DATE
2.IS_DATA_PICKED
如果这两个数据均包含null
,这仅表示数据未迁移到我们的表1 中,则在成功迁移后,我们将通过确认来更新相同的列,因此下次数据将不可用于迁移。
现在假设我们将1000条记录从表2 迁移到了表1 。
完成后,返回到SQL DEVELOPER,选择3条随机记录并将其PICK_DATE
和IS_DATA_PICKED
设置为NULL
。
现在,我又一次进行了相同的迁移,并再次插入了这3条记录。 这意味着3条记录的复制,1000条记录变为1003。
如果存在相同的数据,则应更新记录而不插入,这意味着覆盖。
TABLE 1:SALARY_DETAIL_REPORT_092018
SALARY_REPORT_ID
EMP_NAME
EMP_CODE
PAY_CODE
PAY_CODE_NAME
AMOUNT
PAY_MODE
PAY_CODE_DESC
YYYYMM
REMARK
EMP_ID
PRAN_NUMBER
PF_NUMBER
PRAN_NO
ATTOFF_EMPCODE
REFERENCE_ID
**
TABLE 2:XXMPCD_SALARY_DETAIL_TABLE
EMP_NAME
EMP_CODE
PAY_CODE
AMOUNT
PAY_MODE
PAY_CODE_NAME
YYYYMM
REMARK
PUSH_DATE
PICK_DATE
IS_DATA_PICKED
ERROR_MESG
REFERENCE_ID
PRAYAS_ERP_ORG_ID
ERP_ORG_ID
PF_NUM
PRAN_NO
VERIFIED_BY