本文目录导读:

在命令行中执行 SQL 脚本,最常用的方法是使用相应数据库的命令行客户端工具,以下是针对主流数据库(MySQL、PostgreSQL、SQLite、SQL Server、Oracle)的具体操作步骤。
通用核心思路
命令行工具 + 连接参数 + 脚本文件路径
MySQL / MariaDB
使用 mysql 命令。
基本语法:
mysql -u 用户名 -p 数据库名 < /路径/脚本.sql
具体步骤:
- 打开终端(Linux/macOS)或命令提示符(Windows)。
- 执行命令:
mysql -u root -p my_database < /home/user/init.sql
-u root:指定用户为 root。-p:提示输入密码。my_database:要执行脚本的数据库(如果脚本内包含USE database_name;,此处可省略)。< /home/user/init.sql:将文件内容作为输入重定向给 mysql。
- 按提示输入密码,脚本将开始执行。
其他常用方式:
- 直接指定密码(不安全,仅建议测试用):
mysql -u root -pYourPassword my_database < script.sql
- 从命令行内部执行:
- 先登录:
mysql -u root -p - 选择数据库:
USE my_database; - 执行脚本:
SOURCE /path/to/script.sql;
- 先登录:
PostgreSQL
使用 psql 命令。
基本语法:
psql -U 用户名 -d 数据库名 -f /路径/脚本.sql
具体步骤:
- 确保已安装
psql(通常随 PostgreSQL 安装)。 - 执行命令:
psql -U postgres -d my_database -f /home/user/init.sql
-U postgres:指定用户。-d my_database:指定数据库。-f /path/to/script.sql:指定要执行的脚本文件。
- 系统提示输入密码(默认 postgres 用户可能有密码)。
其他方式:
- 从 psql 交互界面:
\i /path/to/script.sql
SQLite
SQLite 使用 sqlite3 命令。
基本语法:
sqlite3 数据库文件.db < /路径/脚本.sql
或者:
sqlite3 数据库文件.db ".read /路径/脚本.sql"
具体步骤:
- 执行命令:
sqlite3 my_database.db < /home/user/init.sql
my_database.db:指定数据库文件(如果不存在会自动创建)。< /path/to/script.sql:输入重定向。
- 无需认证,直接执行。
SQL Server
使用 sqlcmd 工具(需要安装 SQL Server Command Line Tools)。
基本语法:
sqlcmd -S 服务器地址 -U 用户名 -P 密码 -d 数据库名 -i /路径/脚本.sql
具体步骤(Windows 或 Linux/macOS):
- 执行命令:
sqlcmd -S localhost -U sa -P YourPassword -d my_database -i /home/user/init.sql
-S localhost:指定服务器实例(本地为localhost,远程为IP,端口)。-U sa:用户名。-P YourPassword:密码。-d my_database:指定数据库。-i /path/to/script.sql:指定输入脚本文件。
安全方式(Windows 身份验证):
sqlcmd -S localhost -E -d my_database -i "C:\script.sql"
(-E 表示使用 Windows 集成安全)
Oracle
使用 sqlplus 命令。
基本语法:
sqlplus 用户名/密码@数据库服务 < /路径/脚本.sql
具体步骤:
sqlplus scott/tiger@orcl < /home/user/init.sql
scott/tiger:用户名/密码。@orcl:Oracle 服务名(TNS 条目)。< /path/to/script.sql:输入重定向。
更好的方式(避免密码在命令中暴露):
sqlplus /nolog SQL> connect scott/tiger@orcl SQL> @/path/to/script.sql
或者使用单行命令:
sqlplus scott@orcl @/path/to/script.sql
(这种方式会提示输入密码,相对安全)
常见问题与注意事项
-
错误:命令找不到
确认已安装该数据库的 CLI 工具(如mysql,psql,sqlcmd)并将其路径添加到系统PATH环境变量。 -
编码/字符集问题
- MySQL:在命令后加
--default-character-set=utf8
mysql -u root -p my_db --default-character-set=utf8 < script.sql - PostgreSQL:设置
PGCLIENTENCODING环境变量:
export PGCLIENTENCODING=UTF-8(Unix)或set PGCLIENTENCODING=UTF-8(Windows)
- MySQL:在命令后加
-
文件路径中的空格
使用引号包裹路径,"C:\My Scripts\init.sql"。 -
脚本中包含
USE、\c等切换数据库命令
确保目标数据库存在,否则可能出现 “Unknown database” 错误。 -
输出重定向(保存执行结果)
mysql -u root -p my_db < script.sql > output.txt 2>&1
将标准输出和错误输出都保存到
output.txt文件中。
总结命令速查表
| 数据库 | 命令 |
|---|---|
| MySQL | mysql -u user -p db < file.sql |
| PostgreSQL | psql -U user -d db -f file.sql |
| SQLite | sqlite3 db_file.db < file.sql 或 sqlite3 db_file.db ".read file.sql" |
| SQL Server | sqlcmd -S server -U user -P pass -d db -i file.sql |
| Oracle | sqlplus user/pass@service < file.sql |
根据你实际使用的数据库选择对应命令即可,如果还有具体的报错信息,欢迎提供,我可以帮你进一步诊断。