核心命令概览
最核心的命令结构通常如下:

# 通用语法 mysql -u [用户名] -p[密码] [数据库名] < [sql文件路径]
注意:-p 和密码之间没有空格,为了安全,通常推荐不加密码,而是在执行后手动输入。
详细步骤和示例(以 MySQL 为例)
MySQL 是最需要使用命令行执行 SQL 文件的场景之一。
基本语法
mysql -u [username] -p [database_name] < [path_to_sql_file]
-u [username]:指定连接数据库的用户名,通常是root。-p:提示输入密码。安全起见,不要在命令行中直接写密码,输入命令后按回车,系统会提示你输入密码。[database_name]:指定要将 SQL 语句导入的目标数据库名,SQL 文件中不包含CREATE DATABASE或USE database_name;语句,则必须指定此参数。< [path_to_sql_file]:这是标准输入重定向,它将 SQL 文件的内容作为输入传递给mysql命令。
实际操作示例
假设你有一个名为 backup.sql 的 SQL 文件,你想将它导入到名为 my_app_db 的数据库中,用户是 root。
步骤 1:打开终端

- Windows: 打开 Command Prompt (cmd) 或 PowerShell。
- macOS / Linux: 打开 Terminal。
步骤 2:执行命令
进入你的 SQL 文件所在的目录,或者使用文件的完整路径。
# 假设 backup.sql 在当前目录下 mysql -u root -p my_app_db < backup.sql
执行后,系统会提示:
Enter password:
输入你的 root 用户密码,然后按回车,如果密码正确且 SQL 文件没有语法错误,命令将静默执行完毕,没有输出。

步骤 3:验证
执行完毕后,你可以登录数据库检查数据是否已成功导入。
mysql -u root -p my_app_db
然后在 MySQL 命令行中执行一些查询,SHOW TABLES; 或 SELECT * FROM your_table LIMIT 10; 来确认。
其他数据库系统的命令
不同数据库使用的客户端工具不同,但原理类似。
PostgreSQL
使用 psql 命令行工具。
基本语法:
psql -U [username] -d [database_name] -f [path_to_sql_file]
-U [username]:指定用户名(如postgres)。-d [database_name]:指定目标数据库名。-f [path_to_sql_file]:指定要执行的 SQL 文件路径。
示例:
# 提示输入密码并导入到 my_app_db 数据库 psql -U postgres -d my_app_db -f backup.sql
SQL Server
使用 sqlcmd 命令行工具。
基本语法:
sqlcmd -S [server_name] -U [username] -P [password] -d [database_name] -i [path_to_sql_file]
-S [server_name]:服务器地址,本地用localhost或.,1433(1433是默认端口)。-U [username]:用户名。-P [password]:密码,同样,为了安全,可以省略-P,它会提示输入。-d [database_name]:目标数据库名。-i [path_to_sql_file]:输入文件。
示例:
# 连接到本地默认实例,导入数据 sqlcmd -S localhost -U sa -P your_strong_password -d my_app_db -i backup.sql
Oracle
使用 sqlplus 命令行工具,它的语法略有不同。
基本语法:
sqlplus [username]/[password]@[service_name]@[sql_file_path]
[username]/[password]:用户名和密码。@[service_name]:Oracle 服务名或 SID。@[sql_file_path]:要执行的 SQL 文件。
示例:
# 使用 system 用户,连接到 orcl 服务,执行 backup.sql sqlplus system/your_password@orcl @backup.sql
注意:文件路径最好不要有空格,如果路径中有空格,需要用引号括起来,@"C:\My Documents\backup.sql"。
重要注意事项和最佳实践
-
编码问题
确保 SQL 文件的编码(如 UTF-8)与你的数据库和终端的编码一致,如果出现乱码,最常见的原因就是编码不匹配,建议始终使用 UTF-8 编码保存和传输 SQL 文件。
-
密码安全
- 永远不要在命令行历史记录中留下密码,不要使用
-pYourPassword这种形式,始终使用-p然后手动输入密码,对于自动化脚本,应使用配置文件或环境变量来管理凭据。
- 永远不要在命令行历史记录中留下密码,不要使用
-
SQL 文件内容
- SQL 文件不包含
CREATE DATABASE或USE database_name;语句,你必须在命令中指定目标数据库名。 - SQL 文件包含这些语句,你可以不指定数据库名,它会尝试创建或切换数据库,但这通常用于备份整个数据库结构,而不是导入到现有库。
- SQL 文件不包含
-
错误处理
- SQL 文件中有语法错误,
mysql命令在执行到错误行时会停止,并返回非零的退出码,你可以通过检查 变量(在 Linux/macOS 中)或%ERRORLEVEL%(在 Windows 中)来判断是否成功。 - 对于非常大的 SQL 文件,一次性执行可能会因为内存或超时而失败,可以考虑将大文件分割成多个小文件。
- SQL 文件中有语法错误,
-
路径问题
- 确保你提供的 SQL 文件路径是正确的,如果路径中包含空格,最好用引号将整个路径括起来,
mysql -u root -p my_app_db < "My Backup/backup.sql"。
- 确保你提供的 SQL 文件路径是正确的,如果路径中包含空格,最好用引号将整个路径括起来,
-
权限
- 执行导入操作的用户需要有足够的权限(如
CREATE,INSERT,ALTER等),具体取决于 SQL 文件中的操作。
- 执行导入操作的用户需要有足够的权限(如
-
大型文件处理
- 对于特别大的 SQL 文件(如几十 GB),直接使用
<重定向可能会导致客户端或终端缓冲区溢出,可以考虑使用客户端工具提供的特定导入工具,MySQL 的mysqlimport工具(用于特定格式)或数据库管理平台(如 pgAdmin, DBeaver)的导入功能,它们通常对大文件处理更优化。
- 对于特别大的 SQL 文件(如几十 GB),直接使用
