PostgreSQL中如何在一个SQL文件内运行另一个SQL文件?
在SQL文件中调用外部SQL文件的实现方法
不同数据库系统提供了各自的命令来在SQL脚本中加载并执行另一个SQL文件,以下是常见数据库的实现方式:
PostgreSQL
使用psql客户端的\i命令加载外部SQL文件,支持绝对或相对路径:
-- 创建目标表 CREATE TABLE public.target_table (date_col DATE); -- 执行对应的数据插入脚本 \i 'c:/path/target_table-data.sql'
执行create.sql的命令:
psql -U 用户名 -d 数据库名 -f create.sql
MySQL/MariaDB
使用source命令(或简写\.)调用外部文件:
-- 创建目标表 CREATE TABLE public.target_table (date_col DATE); -- 执行数据插入脚本 source c:/path/target_table-data.sql; -- 或简写形式 -- \. c:/path/target_table-data.sql;
执行create.sql的命令:
mysql -u 用户名 -p 数据库名 < create.sql
SQL Server
通过sqlcmd工具的:r命令引用外部SQL文件:
-- 创建目标表 CREATE TABLE dbo.target_table (date_col DATE); -- 执行数据插入脚本 :r c:\path\target_table-data.sql
执行create.sql的命令:
sqlcmd -S 服务器名 -U 用户名 -P 密码 -d 数据库名 -i create.sql
SQLite
使用.read命令加载外部SQL文件:
-- 创建目标表 CREATE TABLE target_table (date_col DATE); -- 执行数据插入脚本 .read c:/path/target_table-data.sql
执行create.sql的命令:
sqlite3 数据库文件.db < create.sql
注意事项
- 路径格式:Windows系统可使用正斜杠
/或反斜杠\;Linux/macOS系统使用正斜杠/ - 相对路径是相对于执行命令时的当前工作目录,而非
create.sql所在目录,建议优先使用绝对路径避免路径错误 - 确保执行SQL的客户端有读取外部文件的权限
内容的提问来源于stack exchange,提问作者Julian
相关产品推荐
相关产品推荐

