Pages

2009-08-12

[心得]資料庫繁轉簡批次轉換

如果要將一個資料庫(sql2005)內的所有文字欄位,由繁體轉成簡體字
所涉及的字碼轉碼及符合db設計的欄位長度,就可能是一大工程。
幸好很久以前就設為文字欄位皆統一使用nvarchar(n)在存放字串
而且各table欄位也有設計一致性的identity同名欄位。

有個良好的db設計背景,總是一個好的開始,基本的繁轉簡函式,網路上找一大堆。
但,要如何把db內的各tables裏的字串欄位取出轉換再存回呢?

首先,能擅用工具就不要寫code,
我利用sqlsrv的export工具精靈幫我將table匯出成excel或text檔
再用convertz工具轉碼後再import回去,這想法單純且直接(雖然匯出入操作很煩)。

當然事情不可能那麼順利,
匯入時遇到identity欄位及讀取unicode字串長度判讀的欄位長度逸出。
搜尋了網路上db簡繁方案,有人設計sqlsrv與CLR的延伸模組來實作table資料的繁簡互換,
這是比較好的解決方向,但我沒時間研究這些東西。
繼續再找尋相關的tool工具,但都得面對匯出入的欄位規格調整問題。

最後,詢問了朋友們意見,我還是乖乖地寫export/import程式
使用一筆接一筆的update指令更新。