psql 执行多个 sql 文件

for %i in (*.sql) do psql -U 数据库用户名 -d 数据库名 -f "%i"

  • psql 支持 -f 参数指定单个文件,但不支持 -f *.sql 这种通配符写法

  • 必须用 shell 循环,比如:

    |------------------------------------------------------------------------------------|
    | for f in ./migrations/*.sql; ``do psql -U postgres -d mydb -f ``"$f"``; done |

  • 加 -v ON_ERROR_STOP=1 让任意一条 SQL 报错就中断,避免后续文件继续执行

  • 如果文件里含 \c otherdb 或 CREATE DATABASE,得拆成不同 psql 调用------因为 psql 不会在同一个会话里跨库执行

使用find生成主加载脚本.

让我们继续创造这个结构。

复制代码
01/
├── 01_schema.psql
├── 02_types.psql
└── 10_tables
    ├── 01_foo.psql
    └── 02_bar.psql

下面是我们用来创建它的命令。

复制代码
mkdir 01
touch 01/01_schema.sql
touch 01/02_types.sql
mkdir 01/10_tables
touch 01/10_tables/01_foo.sql
touch 01/10_tables/02_bar.sql

现在您可以使用find生成一个加载脚本

复制代码
find ./01/ -type f -printf '\\i %p\n' | sort | tee master.psql
\i ./01/01_schema.sql
\i ./01/02_types.sql
\i ./01/10_tables/01_foo.sql
\i ./01/10_tables/02_bar.sql

现在只运行master.psql;

复制代码
psql -d database -f master.psql
相关推荐
风早爽太4 小时前
Python 学习笔记:数据库迁移工具 ‌Alembic
数据库·python·fastapi·alembic
2501_933670794 小时前
2027风控策略岗秋招准备:SQL、Excel、建模的优先级与项目路径
人工智能·sql·excel
java1234_小锋4 小时前
【技术专题】Mysql8 数据库 - Mysql8 数据库基本操作
数据库·mysql
其实防守也摸鱼5 小时前
DeepSeek Harness 开源贡献手记:从 Issue 到 Merge 的完整旅程
android·数据库·学习·ai·oracle·自动化
jason.zeng@15022075 小时前
canal做mysql的异步传输工具
数据库·mysql·linq
Ivanqhz5 小时前
BURG(自底向上重写生成器)
服务器·数据库·人工智能·深度学习·算法
仍然.5 小时前
Redis---主从复制
java·数据库·redis
其实防守也摸鱼5 小时前
网安自测题:掌握核心知识点的实用练习
linux·运维·服务器·前端·数据库·sql·xss
数字化顾问5 小时前
(142页PPT)PLM+ERP系统选型及建设方案建议书(附下载方式)
数据库
木白CPP5 小时前
[QNX] 深入理解 Resource Manager 接口设计
linux·服务器·数据库