使用命令行在MySQL中导入SQL文件的方法

使用命令行在MySQL中导入SQL文件的方法

技术背景

在数据库管理中,经常需要将已有的 SQL 文件导入到 MySQL 数据库中,例如从开发环境迁移到生产环境,或者进行数据备份恢复等操作。使用命令行导入 SQL 文件是一种高效、灵活且可自动化的方式。

实现步骤

1. 确认数据库是否存在

如果 SQL 文件中不包含创建数据库的语句(如 CREATE DATABASE),则需要先创建一个空的数据库。可以通过以下命令登录 MySQL 控制台并创建数据库:

1
2
3
4
mysql -u username -p
# 输入密码后进入 MySQL 控制台
mysql> CREATE DATABASE yourDatabaseName;
mysql> USE yourDatabaseName;

2. 导入 SQL 文件

以下是几种常见的导入 SQL 文件的方法:

方法一:直接使用命令行导入

1
mysql -u username -p database_name < file.sql

其中,username 是 MySQL 用户名,database_name 是要导入数据的数据库名,file.sql 是要导入的 SQL 文件路径。建议使用 SQL 文件的完整路径。

方法二:在 MySQL 命令行中使用 source 命令

1
2
3
4
mysql -u username -p
# 输入密码后进入 MySQL 控制台
mysql> USE database_name;
mysql> SOURCE /path/to/file.sql;

方法三:处理大文件时关闭自动提交

如果要导入的 SQL 文件非常大,默认的自动提交(autocommit = true)会导致导入速度变慢。可以先关闭自动提交,导入完成后再提交:

1
2
3
4
5
6
mysql -u username -p
# 输入密码后进入 MySQL 控制台
mysql> USE database_name;
mysql> SET autocommit=0;
mysql> SOURCE /path/to/file.sql;
mysql> COMMIT;

方法四:导入压缩文件

如果 SQL 文件是经过压缩的(如 .sql.gz),可以使用 zcatgzcat(在 macOS 上)来导入:

1
zcat database_file.sql.gz | mysql -u username -p -h localhost database_name

核心代码

导入单个数据库

1
mysql -u username -p database_name < file.sql

导出数据库到 SQL 文件

1
mysqldump -u username -p database_name > file.sql

导入多个数据库

1
mysql -u username -p < dump.sql

最佳实践

  • 使用完整路径:在导入 SQL 文件时,使用文件的完整路径可以避免因路径问题导致的错误。
  • 备份重要数据:在导入 SQL 文件之前,建议对目标数据库进行备份,以防数据丢失或损坏。
  • 关闭自动提交:对于大文件的导入,关闭自动提交可以显著提高导入速度。
  • 注意字符集:如果数据库和表使用了特定的字符集(如 UTF-8),在导入时需要指定相应的字符集:
1
mysql -u database_user -p  --default-character-set=utf8 [db_name] < database_file.sql

常见问题

1. 语法错误

如果在执行 database_name < file.sql 时出现语法错误,这是因为该命令不是正确的 MySQL 导入命令。应使用 mysql -u username -p database_name < file.sql 进行导入。

2. 数据库不存在

如果 SQL 文件中不包含创建数据库的语句,而目标数据库又不存在,则需要先创建数据库,再进行导入操作。

3. 导入速度慢

对于大文件的导入,自动提交会导致频繁的磁盘 I/O 操作,从而降低导入速度。可以通过关闭自动提交来解决:

1
2
3
4
5
mysql -u username -p
mysql> USE database_name;
mysql> SET autocommit=0;
mysql> SOURCE /path/to/file.sql;
mysql> COMMIT;

4. 密码安全问题

在命令行中直接输入密码可能会导致密码泄露。可以使用 mysql --defaults-extra-file=etc/myhost.cnf database_name < file.sql,将用户名、密码等信息存储在配置文件中。


使用命令行在MySQL中导入SQL文件的方法
https://119291.xyz/posts/2025-04-22.mysql-sql-file-import-via-command-line/
作者
ww
发布于
2025年4月23日
许可协议