我需要將大型(80 mil記錄)MySQL表複製到另一個表中,因爲我需要向表中添加索引,並且使用ALTER會太慢/耗盡RAM。複製背景中的大型MySQL表
我試過在屏幕實例中運行一個包含INSERT INTO table2 SELECT * FROM table1的MySQL腳本,這樣我就可以分離並退出SSH會話,但由於某種原因它執行了前2000萬行幾個小時)然後它隨機停止。這種方法是否需要大量內存?我怎麼能做到這一點,並在後臺快速?
我需要將大型(80 mil記錄)MySQL表複製到另一個表中,因爲我需要向表中添加索引,並且使用ALTER會太慢/耗盡RAM。複製背景中的大型MySQL表
我試過在屏幕實例中運行一個包含INSERT INTO table2 SELECT * FROM table1的MySQL腳本,這樣我就可以分離並退出SSH會話,但由於某種原因它執行了前2000萬行幾個小時)然後它隨機停止。這種方法是否需要大量內存?我怎麼能做到這一點,並在後臺快速?
轉儲表到.csv文件
mysqldump -u [username] -p -t -T/path/to/directory/file.txt [database] [table] --fields-terminated-by=,
創建具有正確模式的新表
然後使用.csv數據加載新表中它
LOAD DATA INFILE '/path/to/directory/file.txt' INTO TABLE database.new_table FIELDS TERMINATED BY ','
僅供參考:這些命令沒有經過測試,可能需要一些調整,但您應該明白這個想法
謝謝,我與SELECT結合使用,只導出我想要的列。 – Supremacy 2013-02-12 17:15:25
您是否插入g到已經定義了索引的表中? – fvu 2013-02-08 23:41:23
您必須插入一個循環並通過示例提交每1000條記錄。在「程序」中。 – twillouer 2013-02-08 23:47:32