У меня есть две таблицы, обе расположены на разных серверах и принадлежат к разным схемам.
Таблица 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
.
Таким образом, код сотрудника повторяется несколько раз иследовательно, мы не можем поддерживать первичный ключ или уникальный индекс.
Предположим, 1000 записей помещено в ТАБЛИЦА 2 , которые мне нужно скопировать точно в мою ТАБЛИЦУ1 .Это обрабатывается моим классом обслуживания SPRING, в котором доступен графический интерфейс, в котором мы просто нажимаем кнопку миграции, и службы, работающие в фоновом режиме, извлекают данные из TABLE 2 и вставляют их в TABLE 1 * 1027.*.
Внутри ТАБЛИЦА 2
1.PICK_DATE
2.IS_DATA_PICKED
есть два столбца * Если обе эти данные содержат null
, это просто означает, что данные не переносятся в нашу ТАБЛИЦА 1 , мы обновили те же столбцы после успешной миграции, подтвердив, поэтому в следующий раз данные не будут доступны для миграции.
ПРОБЛЕМА
Теперь предположим, что мы перенесли 1000 записей из ТАБЛИЦА 2 в ТАБЛИЦА 1 .Что я сделал, я возвращаюсь к своему РАЗРАБОТЧИКУ SQL, выбираю 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