使用 mysql 命令行工具导入:
mysql -u username -p database_name < dumpfile.sql
输入密码后执行导入
在 MySQL 客户端中导入:
USE database_name;
SOURCE /path/to/dumpfile.sql;
如果遇到字符集错误,指定字符集导入:
mysql -u username -p --default-character-set=utf8mb4 database_name < dumpfile.sql
对于大型SQL文件:
- 增加连接超时时间:
bash
mysql -u username -p --max_allowed_packet=512M --net_buffer_length=16384 database_name < dumpfile.sql
- 或使用 pv
监控进度(需先安装pv工具):
bash
pv dumpfile.sql | mysql -u username -p database_name
确保导入用户有足够权限:
GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
FLUSH PRIVILEGES;
如果从旧版本导入,可能需要转换存储引擎:
sed 's/ENGINE=MyISAM/ENGINE=InnoDB/g' dumpfile.sql > dumpfile_converted.sql
只导入数据不导入结构:
mysql -u username -p database_name --skip-comments --force < data_only.sql
导入时忽略错误继续执行:
mysql -u username -p database_name --force < dumpfile.sql
并行导入(使用myloader工具):
myloader -u username -p password -d /path/to/dumpdir -t 4
(需先安装mydumper/myloader工具)
导入前创建目标数据库:
CREATE DATABASE IF NOT EXISTS database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
导入前禁用外键检查加速导入:
SET FOREIGN_KEY_CHECKS = 0;
-- 导入操作
SET FOREIGN_KEY_CHECKS = 1;
对于生产环境,建议先在测试环境验证导入
考虑在低峰期执行大型数据库导入操作
遇到具体错误时,可以根据错误信息进一步调整导入参数或修改SQL文件。