如何检查现有记录并避免冗余数据

时间:2018-09-20 07:23:28

标签: sql oracle

我有两个表,它们都位于不同的服务器上并且属于不同的架构。

表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_DATEIS_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

0 个答案:

没有答案