0
我不是在寻找答案,而是在正确的方向上推动更多。我在包含客户信息的数据仓库服务器上有一个表,我想创建一个存储过程/作业,从表的实时版本每晚更新该表。但是,有很多记录,所以我不想每次都截断并重新填充数据。我想插入任何新记录并仅更新已更改的记录...例如客户电子邮件已更改。SQL仅更新表中新的或更改的记录
我只是寻求最好的方法来解决这个问题,以尽量减少系统开销的建议。
任何帮助,非常感谢!
我不是在寻找答案,而是在正确的方向上推动更多。我在包含客户信息的数据仓库服务器上有一个表,我想创建一个存储过程/作业,从表的实时版本每晚更新该表。但是,有很多记录,所以我不想每次都截断并重新填充数据。我想插入任何新记录并仅更新已更改的记录...例如客户电子邮件已更改。SQL仅更新表中新的或更改的记录
我只是寻求最好的方法来解决这个问题,以尽量减少系统开销的建议。
任何帮助,非常感谢!
你不说你正在使用哪种数据库产品。但是一些现代风格的DMBS支持MERGE
SQL语句。例如Oracle has had it since 9i和SQL Server since 2005。 (不知道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;
您正在使用哪个数据库?哪个版本? – 2010-11-02 22:10:21
每天更新多少条记录?有多少是全新的? – 2010-11-02 22:12:20