1
使用SQL Server 2008SQL更新主表每小時基於敵不過複合PK
我有一個從下載FTP CSV文件重命名,並每隔一小時的文件的SSIS任務。之後,我正在將數據批量插入到名爲NEWFTPDATA的新表中。
此文件中的數據是當天到當前小時的數據。該表具有由4個不同列組成的複合主鍵。
我需要完成的下一步是使用T-SQL,將這個新表與我現有的主存檔表進行比較,並根據匹配插入任何尚不存在的行(或者在這4列上不匹配)
因爲我將每次下載這個文件(對於實時報告)爲每個後續運行將有重複的數據,我不想插入到主表中,以避免重複的數據。
我已經找到了基於一個特定列的存在做到這一點的方法,但我似乎無法弄清楚如何根據4列需要匹配來做到這一點。
的工作流程應該是從NEWFTPDATA如下
更新MASTERTABLE其中newftpdata.column1,newftpdata.column2,newftpdata.column3,newftpdata.column4在MASTERTABLE
不存在希望我提供的大量資料對於這個問題。如果需要更多詳情,請告訴我。謝謝。
由於雷達。在此期間,我實際上偶然發現了另一種獲得相同結果的方式(我認爲)。使用下面的 插入到MasterTable SELECT * FROM newftpdata 除了 SELECT * FROM MasterTable 是否有顯著的好處,使用合併這個過程呢? – UnladenSwallow
@Herpington_McDerpington,如果不存在()插入也很好,Merge是一個新的構造,它會做同樣的事,但需要更少的SQL並且易於閱讀。 – radar
我想我用MERGE所要解決的問題是編寫所有列的必要性 - 有100多個......這不是什麼大不了的,因爲我只在存儲過程中做過一次) ,但如果我評論的另一種方法行之有效,那麼我寧願隨便說一下。非常感謝你的協助! – UnladenSwallow