我們收到來自客戶的數據饋送,每次都會得到大致相同的模式,儘管它可以在客戶端更改,因爲它們使用的是第三方應用程序。當我們收到數據文件時,我們將數據導入到一個臨時數據庫中,每個數據文件(學生,出勤等)都有一張表格。然後,我們希望將該數據與我們已經存在於該客戶的數據庫中的數據進行比較,並查看上一次運行中哪些數據發生了更改(列已更改或整行可能被刪除)。然後,我們希望將更新後的值或刪除的行寫入審計表,以便我們可以返回查看先前數據導入中更改的數據。我們不想更新數據本身,我們只想記錄兩個數據集之間的不同。然後,我們將刪除客戶數據庫中的所有數據,並按照來自新數據文件的數據完全導入數據,而無需更改(此指令已傳出並且無法更改)。最大的問題是我需要動態地做到這一點,因爲我不知道我將從客戶那裏得到什麼架構,因爲他們可以定製到他們的表。我需要能夠動態確定目標中有哪些表及其結構,然後查看源並比較這些值以查看數據中發生了什麼變化。如何在SQL Server中動態比較源表和目標表中的行
附加信息: 源代碼中沒有ID列,但有幾列可以用作代理鍵,這些列可以組成不同的行。
我希望能夠爲每個表通用做到這一點,而不必硬編碼值,雖然我可能必須爲單獨的參考表中的每個表的代理鍵做到這一點。
我可以使用SSIS,SPs,觸發器等,無論哪個更有意義。我已經看了所有的東西,包括tablediff,而且似乎沒有我需要的所有東西,或者一旦我進入它們,邏輯開始變得非常複雜。
當然,任何具有這樣的事情的任何具體的例子,他們已經做了將不勝感激。
讓我知道是否有任何其他信息會有所幫助。
感謝
請包括表格/文件結構。 – Maess 2012-04-10 19:17:12
@Maess - 你看過這個問題嗎?表格改變。 – JonH 2012-04-10 19:19:51
你所有的客戶都向你發送文件。您獲得的這些文件具有一組通用列,但客戶端可以添加自己的自定義列。你關心這些自定義列中的數據嗎?因爲您正在討論爲每個文件動態更新永久表模式,假設您想保留自定義數據。 – lyrisey 2012-04-10 19:49:18