因数据库一张表里有3百万条数据,通过sql导入会非常缓慢,现记录自己通过idb导入的过程。
此例中表名为 stock
建表结构
先在目标数据库建好表结构
create table stock(
id varchar(32) not null comment '主键id',
name varchar(32) comment '姓名',
......,
primary key (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='XXX';
删除表空间:
ALTER TABLE stock DISCARD TABLESPACE;
即删除.idb文件
复制idb文件
复制idb文件至目标数据库的对应文件夹内,通常位于/usr/local/mysql/data/你的数据库名/
cd /usr/local/mysql/data/
cp -a dbname1/stock.idb dbname2/
文件授权
将复制好的idb文件授权
chown mysql:mysql stock.ibd
导入表空间
alter table stock import tablespace;
导入结束
导入过程结束,可以连接后使用