天天看點

将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,參見:

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

繼續閱讀