2008-10-23 167 views
1

我必須將表從MSSQL Server遷移到MySql。問題在於表格非常大(6500萬條記錄),整個過程需要很長時間。有沒有人有任何想法如何加快速度?任何有用的工具,可以改善這一點?將表從MS SQL Server遷移到MySQL

+0

同樣的答案:http://stackoverflow.com/questions/11619177/sql-server-2008-r2-to-mysql-migration/11625261#11625261 – Jacob 2012-08-02 11:30:41

回答

0

,你可以將數據導出到文本,然後使用mysql負荷聲明:由'\n'

LOAD DATA LOCAL INFILE '/somefolder/text_file_with_data.txt'到表some_table場由'\t'行終止終止,或者如果你把數據文件MySQL服務器上可以:

負載數據的infile '/somefolder_on_the_mysql_server/text_file_with_data.txt'成表字段some_table通過'\t'線終止由'\n'

終止

我不確定mssql的語法輸出是什麼

您可以始終以10,000或100,000的數量導出。

1

需要只做一次嗎?不要浪費太多時間優化,等待'直到完成並繼續前進。

需要更頻繁嗎?然後詳細說明你目前使用的工具/技術將會有所幫助。

0

確保mysql表最初沒有索引;加載完成後添加它們。

0

確保MySQL表存儲文件是通過在my.ini文件使用這樣的語句開始插入前足夠大:

innodb_data_file_path=ibdata1:1000M:autoextend 
0

嘗試,如果你能得到的數據出來MSSQL和到MySQL通過使用您可以使用SQL Server的導入/導出嚮導生成的SSIS/DTS包。 (連接到MySQL與適當的OLEDB/ADO提供商

當你回家上週五,檢查回來的週末之後

啓動它。)

0

確保沒有列有他們的索引,並刪除任何外鍵(如果您使用InnoDB作爲表類型)進行導入。

1

下面是我如何將MS SQL Server的800K記錄表遷移到MySQL。

創建一個查詢在表格格式顯示的數據:

SELECT [PostalCode] + ' ' + 
    [StateCode] + ' ' + 
    [Latitude] + ' ' + 
    [Longitude] + ' ' + 
    [CityName] 
FROM [dbo].[PostalCode] 

執行與SQL Server Management Studio中的查詢,並選擇將結果輸出到一個文件(菜單:查詢 - >結果結果到文件)

文件名必須是MySQL中表的名稱。文件擴展名無關緊要。

然後使用mysqlimport。EXE(Windows系統)導入數據(表必須在MySQL數據庫中存在):

mysqlimport.exe --user=user_name 
    --columns=postalcode,statecode,latitude,longitude,cityname 
    --ignore-lines=2 databaseName pathToFile 

導入後,我不得不刪除最後2條記錄的表,因爲包含在文件的結尾一些垃圾:(818193行受影響)

對於800K它非常快:導出10秒,然後10秒導入。

希望這會有所幫助。