我们经常会遇到修改一个大数据表的需求,不如给一个大数据表增加字段之类。如果直接使用alter则会导致锁表,并影响线上服务,最近跟同事学了一种比较好的处理方式。
这种方式通过先使用新的结构建立一个临时表,之后将数据从原来的表导入到临时表。在数据导完之后通过rename修改表的名称。
-- 将数据导出到一个临时文件
select * from ainto outfile 'a.sql';
set character_set_database=utf8;
-- 从临时文件导入新的数据表
load data infile 'a.sql' into table a1;