我想用psql作为单个事务顺序执行几个sql脚本,以设置数据库模式。做这个的最好方式是什么?过去我知道我有一个针对其他文件运行psql的主脚本,但是我不记得该脚本的语法。

#1 楼

您的脚本可能如下所示:

BEGIN;
\i file1.sql
\i file2.sql
COMMIT;


或者您可以执行以下操作:

cat file1.sql file2.sql | psql -1 -f -


评论


了解Shell中的管道有助于我获得最后一条命令。

–ma11hew28
2015年9月24日15:13



您的BEGIN示例;承诺;不起作用,您需要在每\ i行的末尾使用半列:

– nichochar
19-2-14在22:53



#2 楼

我使用unix / linux中的find命令,使用rep_sql参数的sql过去文件的路径,并带有“ read”指令:

find -P ${rep_sql} -type f -name *.sql -execdir psql -d "mabase" -f {} +


它说:查找不跟随链接使用ext作为«.sql»来命名任何名称的文件,并在与mabase一起使用的psql文件的目录中执行并执行找到的文件。

#3 楼

您也可以简单地执行以下操作:
psql -c "BEGIN TRANSACTION;" -f file1.sql -f file2.sql -c "COMMIT;"