具有相似行的数据迁移2表

问题描述 投票:0回答:3

我有两个已存档的表。对于单个日期,它们具有相同的行,且数据很少。我需要将表2记录插入表1中。当我这样做时,我将得到唯一约束被忽略的错误。如何实现。是否有任何提示可以忽略已经存在的数据而仅插入新记录。

sql oracle plsql database-administration
3个回答
1
投票

您可以使用此: INSERT INTO destTable SELECT Field1,Field2,Field3,... FROM srcTable WHERE NOT EXISTS(SELECT * FROM destTable WHERE (srcTable.Field1=destTable.Field1 and SrcTable.Field2=DestTable.Field2...etc.) )


0
投票

您可以使用SET运算符MINUS达到以下结果:

INSERT INTO TABLE1 (<COLUMN NAMES>)
SELECT <COLUMN NAMES> FROM TABLE2
MINUS
SELECT <COLUMN NAMES> FROM TABLE1

根据MINUSoracle documentation运算符的描述是

第一个查询而不是第二个查询选择的所有不同行

干杯!


0
投票

另一种可能的解决方案是使用MERGE,在下面的link上您可以找到有用的教程,对其进行了详细说明。

MERGE INTO table1 a
    USING table2 b ON (a.col1 = b.col1) -- define your own search condition
        WHEN NOT MATCHED THEN
            INSERT (a.col1, a.col2, a.col3 ...)
            VALUES (b.col1, b.col2, b.col3 ...);
© www.soinside.com 2019 - 2024. All rights reserved.