[英]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.