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

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

技术背景

在数据库管理中,经常需要将SQL文件导入到MySQL数据库中,比如进行数据备份恢复、迁移数据等操作。使用命令行导入SQL文件是一种高效且常用的方式。

实现步骤

基本导入命令

可以使用以下命令导入SQL文件:

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

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

若数据库不存在

如果数据库不存在,且导出的SQL文件中不包含 CREATE DATABASE 语句(如使用 --no-create-db-n 选项导出),则需要先创建数据库:

  1. 登录MySQL控制台:
1
mysql -u userName -p;

然后输入密码。
2. 创建数据库并使用:

1
2
mysql> create database yourDatabaseName;
mysql> use yourDatabaseName;
  1. 导入SQL文件:
1
mysql> source pathToYourSQLFile;

不同操作系统和环境下的导入方法

  • Unix
1
mysql db_name < backup-file.sql
  • Windows命令提示符
1
mysql -p -u [user] [database] < backup-file.sql
  • PowerShell
1
cmd.exe /c "mysql -u root -p db_name < backup-file.sql"
  • MySQL命令行
1
2
mysql> use db_name;
mysql> source backup-file.sql;

导入大文件

由于MySQL默认设置 autocommit = true,导入大文件会比较耗时。可以先关闭自动提交,导入完成后再提交:

1
2
mysql> use db_name;
mysql> SET autocommit=0 ; source the_sql_file.sql ; COMMIT ;

处理UTF8字符集

如果导出的表使用了UTF8字符集,导入时需要指定字符集:

1
mysql -u database_user -p  --default-character-set=utf8 [db_name] < database_file.sql

导出时也可以指定字符集:

1
mysqldump -u database_user -p --default-character-set=utf8 [db_name] > database_file.sql

导入多个SQL文件

在Unix系统中,可以使用以下命令导入多个SQL文件:

1
for i in *.sql ; do mysql -u root -pPassword DataBase < $i ; done

查看导入进度

可以使用 Pipe Viewer (pv) 查看导入进度:

  • Mac系统:brew install pv
  • Debian/Ubuntu系统:apt-get install pv
    使用命令:
1
pv import.sql | mysql -u root -p password -D database_name

核心代码

基本导入

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

大文件导入

1
2
mysql> use db_name;
mysql> SET autocommit=0 ; source the_sql_file.sql ; COMMIT ;

处理UTF8字符集导入

1
mysql -u database_user -p  --default-character-set=utf8 [db_name] < database_file.sql

导入多个SQL文件

1
for i in *.sql ; do mysql -u root -pPassword DataBase < $i ; done

查看导入进度

1
pv import.sql | mysql -u root -p password -D database_name

最佳实践

  • 在导入之前,确保已经备份好现有的数据库,以防数据丢失。
  • 查看导出的SQL文件,了解其中包含的命令,避免重复创建数据库导致错误。
  • 对于大文件,关闭自动提交可以显著提高导入速度。
  • 处理包含特殊字符集的数据时,要指定正确的字符集。

常见问题

数据库不存在

如果数据库不存在且导出文件中没有创建数据库的语句,需要先手动创建数据库。可以使用以下命令:

1
2
mysql -u root -e "CREATE DATABASE db_name"
mysql db_name --force < import_script.sql

路径问题

在Windows系统中,使用路径时要注意使用正斜杠 / 或双反斜杠 \\,避免转义问题。例如,使用 E:/test/dump.sqlE:\\test\\dump.sql

字符集问题

如果导入的数据包含特殊字符,而没有指定正确的字符集,可能会导致乱码。需要使用 --default-character-set 选项指定字符集。


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