mysql 快速导入超大SQL文件(10G以上)
最近项目需要导入人家的数据,文件在10G以上,下面是实际总结记录,避免再次踩坑。
一般优化方法:
登录mysql
mysql -u root -p密码
创建数据库
CREATE DATABASE 数据库名;
设置参数
set sql_log_bin=OFF;//关闭日志
set autocommit=0;//关闭autocommit自动提交模式
set names utf8;
use 数据库名;
开启事务
START TRANSACTION;
引入SQL文件
source 文件的路径;
成功后事务提交
COMMIT;
这种方法可以提高导入速度,但是没解决根本,如果表的外键和索引比较多的话,照样很慢。
最好的方法是:先分别导出建表语句和数据语句,然后手工建表,删除外键和索引,然后再导入数据这样就会非常快。
导出结构不导出数据
mysqldump --opt -d -u root -p密码 数据库名> xxx.sql
或者mysqldump --no-data -u username -p* database_name > xxx.sql
导出低于8.0版本的MySQL数据库时,会出现Unknown table ‘column_statistics’ in information_schema的错误. 加选项--column-statistics=0就可以了
mysqldump --opt -d --column-statistics=0 -u root -p密码 数据库名> xxx.sql
导出数据不导出结构
mysqldump --opt -t -uroot -p密码 数据库名 > xxx.sql
备注:导出、导入数据用MYSQLDUMP,不要用NAVICAT。
备注:实战示例,解疑答惑。
--不间端地思考,实时地批判你的工作!