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
相关推荐
CodeGL2 分钟前
15、Python 访问数据库
数据库·python
小此方9 分钟前
Re:Mysql数据库基础篇(五):拒绝脏数据!一文吃透MySQL表的约束(主键、唯一键、外键与实战案例)
数据库·mysql
想做小南娘,发现自己是女生喵26 分钟前
LAN Device Monitor 第二周学习文档
java·服务器·数据库
byte轻骑兵30 分钟前
【TextIn xParse + WorkBuddy】把8小时的标书审查压进1小时:招标要求逐条核验与废标风险预警工作台
大数据·数据库·aigc·textin·ai数据层基础设施
翔云12345637 分钟前
Gaea(小米MySQL Proxy)整体架构
运维·数据库·mysql
jaysee-sjc43 分钟前
【苍穹外卖】Day10:定时任务与 WebSocket 实时提醒实战
java·开发语言·javascript·数据库·vue.js·websocket·网络协议
牧瀬クリスだ1 小时前
Redis五大数据类型全解析:从入门到实战
java·数据库·redis·后端·缓存
瑞克-桑切斯1 小时前
PostgreSQL 14.4 源码部署 & 运维手册(CentOS7)
数据库·学习·postgresql
上海红同电子1 小时前
红同电子线束工厂100问|绝缘护套采购,材质PVC、TPE、PP该如何选型?
数据库·经验分享·职场和发展·产品运营·制造·材质
泡海椒1 小时前
JQuick-SQL “数据源 SPI”辨析:应用适配器与 Function SPI 的正确边界
数据库·驱动开发·sql