2013-06-01 137 views
0

我們在DB2數據庫和大約700桌的模式 - 要求是在一個新的模式從這些表中的數據遷移到表(在同一DB),在這兩個模式中的表具有幾乎相同名。DB2數據遷移到新架構

的要求是有些複雜,由於以下兩個因素:

  • 字段/列是在新表更小。
  • 舊錶都VARCHAR領域,而新表具有特定的數據類型(DATE,DECIMAL,CLOB等)

我們正在尋找解決方案投裝卸流程,映射之間的數據表之間的列。

謝謝!

+1

除了這兩件事之外,它大部分是從舊到新的表格的1對1映射嗎?另外,源表和目標表中的列名是否相同?如果是這樣,應該不難閱讀目錄,並吐出一個你想要的基本腳本。 –

+0

是的,映射在表格之間始終是一對一的。列的名稱並不完全相同 - 但是有一個獨立的進程(應用程序)正在爲我們創建新的模式,我們正試圖通過此應用程序創建一些表以定義列之間的映射。 – Taha

+0

如果你有表對,你可以編寫一個程序連接到數據庫,讀取這兩個表的元數據,然後做你想做的事情。例如,如果你想爲小於10K記錄的表生成INSERT語句,你的程序可以做到這一點......轉換需要改變的字段格式。 如果要將數據寫入輸出文件,但只寫入目標列,則可以這樣做。等等。你的組織是否有ODBC或JDBC程序員? –

回答

1

這是一個非常艱鉅的任務,因爲源和目標差別很大。一個工具不容易理解新表中的列缺失,即使它們是空的或空值。投射也很困難,因爲有必要分析源列中的數據,然後檢查所有這些值是否與某個類型相對應(但之前需要測試多個類型),然後執行匹配。

也許,如果源和目標表中的列名相同,任務可能會更加容易。你只需要匹配名稱,然後注入數據即可。

分析這個情況後,我的結論是元數據是不是在這種情況下非常有用,因爲表的屬性將在遷移發生很大的變化。大多數情況下,遷移基於元數據,但由於幾乎所有變化都在變化,因此目錄數據庫幾乎沒有用處。而且,許多工具都基於元數據,而不是數據本身。

您正在從varchar中取得最常用的數據類型,您可以在其中放入任何其他類型的值,並且您希望通過根據數據分配適當的數據類型來優化存儲,但是它也應該是完成關係完整性;我的意思是,作爲關係中主鍵的列的數據類型應該與其他表中的外鍵相匹配,而不僅僅是數據類型而是精度。這最後是一個額外的問題,我希望你有關係完整性。

我不知道一個工具,智能,你正在尋找。不過,我建議你做一個手動工作。首先,嘗試檢測列名的政策,我的意思是如果列被稱爲地址你就會知道,所有表中是64的VARCHAR,一列名爲價格可以在所有的表的雙列。只需通過對列名稱進行詞典分析,就可以將模型標準化。但是,您必須檢查具有該名稱的所有列中的值是否以該列精度「輸入」。最後一部分是一個非常耗時的過程,因爲您必須讀取所有表中的值,並查找每個日期類型的最長值。

+0

感謝您的回覆。是的,我們也在考慮手動編寫腳本。新模式已經創建,只有數據要被遷移。我們有一個表格,我們可以從中獲取表格的映射。表格之間沒有關係,它們都是獨立的。 – Taha

+0

有一個獨立的進程(應用程序)爲我們創建新的模式。我們正試圖通過這個應用程序創建一些表來定義列之間的映射 - 很可能是逗號分隔的一列列,數據將被遷移。如果我們在這方面取得成功,那麼唯一需要破解的就是數據轉換。 – Taha