我需要将一个大的(80密耳记录)MySQL表复制到另一个表中,因为我需要在表中添加一个索引,并且使用ALTER只会太慢/耗尽RAM。
我尝试在屏幕实例中运行包含INSERT INTO table2 SELECT * FROM table1的MySQL脚本,以便我可以分离并退出SSH会话,但由于某种原因,它执行了前2000万行(这需要一对小时)然后它随机停止。这种方法需要大量内存吗?我怎么能在后台快速完成这项工作呢?
答案 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 ','
仅供参考:这些命令未经过测试,可能需要进行一些调整,但您应该明白这一点