將SQL Server 2000數據導入到MySQL 5.5的方法

一、安裝MySQL 5.5(可以與SQL Server不在同一臺服務器上),並新建一個空的數據庫(一般用utf-8編碼),用於接收導入的數據。

二、在SQL Server的服務器上安裝mysql-connector-odbc-5.3.2-win32。

三、在SQL Server的服務器上運行“管理工具”->“數據源(ODBC)”,切換到“系統DSN”面板,添加“MySQL ODBC 5.3 Unicode Driver”,填寫“Data Source Name”爲任意名稱,填寫“TCP/IP Server”和“Port”爲MySQL數據庫的IP和端口(一般爲3306),再填寫有數據庫權限的用戶和密碼(一般爲root用戶,不裝在本機的MySQL需要開通root遠程訪問權限),最後選擇“Database”爲第二步創建的數據庫。

四、運行SQL Server的企業管理器,右鍵單擊需要導出的數據庫,在上下文菜單上選擇“所有任務”->“導出數據”。點擊下一步,先確認數據源的數據庫名稱是否正確(這一步一般選擇Windows驗證,也可以換成SQL Server身份驗證)。再點擊下一步,選擇“目的”爲“MySQL ODBC 5.3 Unicode Driver”,再選擇“用戶/系統 DSN”爲第三步創建的Data Source。點擊下一步,選擇“從數據庫複製表和視圖”。點擊下一步,在選擇源表和視圖中點擊全選,點擊下一步,然後立即執行。

五、數據導出成功後,SQL Server中的表字段爲主鍵和自增量的字段不會在MySQL中設置成功。還需要回到MySQL,進行手工設置。可以使用Navicat MySQL圖形工具或者執行SQL:

ALTER TABLE `users`
MODIFY COLUMN `id`  int(11) NOT NULL AUTO_INCREMENT FIRST ,
ADD PRIMARY KEY (`id`);


我在導出數據的過程中,有些表在COPY數據時會發生錯誤。我遇到的錯誤和解決辦法如下:

1、某個表的某個字段 cannot be null

在導出數據之前,先在SQL Server中將該表的該字段設置爲“允許爲NULL”

2、某個表的某個字段 Data too long for column 'name'

這種情況發生在安裝了mysql-connector-odbc-5.1.2-win32,且SQL Server某記錄存在中文亂碼。改用mysql-connector-odbc-5.3.2-win32並選擇MySQL ODBC 5.3 Unicode Driver後,問題解決。

3、某個表 id doesn't have a default value

查詢Google,有解決辦法禁用MySQL的strict Mode,參見:http://blog.csdn.net/god8816/article/details/8593419

其實只需要手工修改MySQL中該表的id字段爲主鍵+Auto Increment,然後進入企業管理器,重新導出該表即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章