我必須將表從MSSQL Server遷移到MySql。問題在於表格非常大(6500萬條記錄),整個過程需要很長時間。有沒有人有任何想法如何加快速度?任何有用的工具,可以改善這一點?將表從MS SQL Server遷移到MySQL
回答
,你可以將數據導出到文本,然後使用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的數量導出。
需要只做一次嗎?不要浪費太多時間優化,等待'直到完成並繼續前進。
需要更頻繁嗎?然後詳細說明你目前使用的工具/技術將會有所幫助。
確保mysql表最初沒有索引;加載完成後添加它們。
確保MySQL表存儲文件是通過在my.ini文件使用這樣的語句開始插入前足夠大:
innodb_data_file_path=ibdata1:1000M:autoextend
嘗試,如果你能得到的數據出來MSSQL和到MySQL通過使用您可以使用SQL Server的導入/導出嚮導生成的SSIS/DTS包。 (連接到MySQL與適當的OLEDB/ADO提供商
當你回家上週五,檢查回來的週末之後啓動它。)
確保沒有列有他們的索引,並刪除任何外鍵(如果您使用InnoDB作爲表類型)進行導入。
下面是我如何將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秒導入。
希望這會有所幫助。
同樣的答案:http://stackoverflow.com/questions/11619177/sql-server-2008-r2-to-mysql-migration/11625261#11625261 – Jacob 2012-08-02 11:30:41