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