2016-11-09 35 views
0

我是SSIS的新手,並且在創建SSIS包以完成特定任務後提供了一些幫助。我的數據遠程存儲在MySQL數據庫中,並將其下載到SQL Server 2014數據庫。我想要做的是以下內容,創建一個包,可以輸入2個日期,這些日期可以與許多表上每條記錄修改的創建日期/日期進行比較,以便快速獲取並將MySQL數據與SQL進行比較數據,以便我可以查看是否有任何行從我的本地SQL數據庫中丟失或者是否需要更新。有些表沒有日期,所以我只想看看如果在2之間有什麼東西會丟失什麼。如果通過TSQL更好地實現這一點,我很樂意聽到其他建議或網站來查看事情已經完成的情況。 。用於SQL/MySQL表comparrison的SSIS或TSQL

關於您的查詢標籤: 「您好,我們的主數據存儲在MySQL數據庫中,然後將數據下載到SQL Server數據庫中。現在是我有一個SSIS包,它使用MAX ID可以在大多數表中找到,以找出哪些記錄是新的,只是下載或更新它們。我想要做的是對錶進行單獨的檢查確保在下載過程中沒有遺漏任何東西,並且所有內容都處於同步狀態。在理想的情況下,我希望將日期範圍傳遞給SSIS包或tsql存儲過程,我們應該說日曆周,然後檢查是否有任何問題遠程MySQL數據庫表和本地SQL表之間的差異,目前它不需要做任何事情,只是識別問題,糾正它們可能會出現稍後或需要對現有的同步軟件包進行更改。希望他的更有意義。」

由於P

+0

MySQL數據被「下載到SQL Server」,所以你只需要比較同一個SQL Server上的兩個表?它是否正確? –

+0

爲了確保事物同步,您需要一個可以在系統之間進行比較的密鑰。你有嗎?我建議你忘記交互式輸入日期,而是比較整個表格中的數據。知道整個表是否一致而非僅僅是一個表是更有用的。除了SSIS並非真正用於交互式使用。相反,您通常會從表格或環境中加載這些日期。 –

+0

嗨,尼克,感謝您回答您的問題中的評論是的,有一個可以在表格之間進行比較的關鍵。我希望能夠輸入日期的原因是,在過去24/48小時內下載的數據可能存在合理的差異,所以我想從檢查中排除這些數據。在理想的世界中,我想將這個包用於多個數據庫,它們或多或少具有相同的表格,但不是完整的副本。 – PJD

回答

1

要做到這一點,你需要實現一個1型漸變在SSIS尺寸類型的數據流。有許多方法可以做到這一點,包括一個內置在改造形象地稱爲Slowly Changing Dimension轉型。雖然這是很容易成立,它是維持一個痛苦和它運行的窘況慢。

有許多方法來設置此使用其他變換,甚至SQL merge命題與詳細在這裏:https://bennyaustin.wordpress.com/2010/05/29/alternatives-to-ssis-scd-wizard-component/

我建議您使用Lookup轉換,因爲它們的轉換性能比Slowly Changing Dimension轉換要好,但它比更好的SQL merge語句提供更好的診斷和錯誤處理。

在執行此操作之前,您需要將ChecksumHashbytes列添加到SQL數據中,以便與傳入的MySQL數據進行比較。

簡而言之,當數據下載到您的SQL Server中時,計算某種可重複的校驗和,然後在SSIS Lookup(與行鍵匹配)中檢查更改。如果同一行的校驗和值不同,它需要更新,並且SQL數據中沒有匹配的行鍵,則需要插入新行。