使用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秒的导入表中的记录?
答案 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);