在DB2中按时间戳处理重复的记录插入

时间:2018-01-25 14:30:55

标签: database insert timestamp db2 db2-luw

使用DB2 9.7.5,我有两个表,主表和导入表。每小时我都会得到一个插入导入表的数据转储。然后,我将导入表中的记录合并到主表中。要区分主表中的现有记录,所有记录都会加时间戳到第二个记录。

两个表都是这样定义的:

CREATE TABLE ... (
    STATUS VARCHAR(1000) NOT NULL,
    ACTION_DATE TIMESTAMP NOT NULL
) IN SOME_TABLE_SPACE;

在将导入表合并到主表之前,我删除了导入表中的现有记录。

DELETE FROM IMPORTING
WHERE (ACTION_DATE) IN
    (SELECT ACTION_DATE FROM MASTER);

导入表中的唯一记录应该是新记录,因此我将导入表中的记录插入到主表中。

INSERT INTO MASTER (STATUS, ACTION_DATE)
SELECT STATUS, ACTION_DATE FROM IMPORTING;

我不时遇到的问题是我得到了重复的记录,因为主表和导入表之间的ACTION_DATE有时会关闭最多2秒

那么如何从主表中删除时间戳偏移为2秒的导入表中的记录?

1 个答案:

答案 0 :(得分:0)

为避免重复问题,您可以更改insert sql以仅插入主表中不存在的记录。

INSERT INTO MASTER(状态,ACTION_DATE) SELECT STATUS,ACTION_DATE FROM IMPORTING I 哪里不存在     (从MASTER M中选择1      其中m.ACTION_DATE = i.ACTION_DATE);