繁体   English   中英

SQL仅更新表中的新记录或更改的记录

[英]SQL update only new or changed records in table

我不是在这里寻找答案,而只是在正确的方向上推a。 我在数据仓库服务器上有一个包含客户信息的表,并且我想创建一个存储过程/作业,以从表的实时版本每晚更新该表。 但是,有很多记录,所以我不想每次都截断并重新填充该数据。 我想插入任何新记录并仅更新已更改的记录,例如,客户电子邮件已更改。

我只是在寻找有关最佳方法的建议,以最大程度地减少系统开销。

任何帮助是极大的赞赏!

您没有说您正在使用哪个数据库产品。 但是,某些现代版本的DMBS支持MERGE SQL语句。 例如, Oracle从9i开始使用它 ,而SQL Server从2005开始使用 DB2版本9拥有它 (不知道IBM何时引入它)。

MySQL的等效项是ON DUPLICATE KEY UPDATE ,但用途并不广泛。

如果您的数据库不支持该语法,则需要手工编码UPSERT语句。 这将是以下形式

begin
    update your_table
          set col1 = 23
          when pk_col = 42;
exception
    when no_data_found then
        insert into your_table (pk_col, col1)
        values (42, 23);
end;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM