在后台复制大型MySQL表

时间:2013-02-08 23:38:44

标签: mysql

我需要将一个大的(80密耳记录)MySQL表复制到另一个表中,因为我需要在表中添加一个索引,并且使用ALTER只会太慢/耗尽RAM。

我尝试在屏幕实例中运行包含INSERT INTO table2 SELECT * FROM table1的MySQL脚本,以便我可以分离并退出SSH会话,但由于某种原因,它执行了前2000万行(这需要一对小时)然后它随机停止。这种方法需要大量内存吗?我怎么能在后台快速完成这项工作呢?

1 个答案:

答案 0 :(得分:1)

将表转储为.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 ','

仅供参考:这些命令未经过测试,可能需要进行一些调整,但您应该明白这一点