首页 > 解决方案 > 从 ASSERT 下的 SQL 脚本执行 BASH 脚本

问题描述

目标是在 SQL 脚本中的断言之后执行脚本hi.sh。

hi.sh包含:

#!/bin/bash

echo 'Hello World'

我正在尝试在 DO 中执行hi.sh

DO $$
BEGIN
   ASSERT EXISTS (SELECT * FROM pg_catalog.pg_tables WHERE schemaname = 'public'), '"Public" schema is empty';
   \! ./hi.sh
END$$;

它应该引发错误'“公共”模式为空'并且不执行hi.sh但是一旦公共模式中有条目,必须执行hi.sh。

运行 sql 脚本会引发错误:

psql:assert.sql:5: ERROR:  syntax error at or near "\"
LINE 4:    \! ./hi.sh
           ^

但是,它会执行一次 shell 脚本 '\!' 行在 DO 之外,如下所示:

\! ./hi.sh

我们如何创建一个简单的 SQL 脚本来基于断言执行hi.sh ?

标签: sqlbashassert

解决方案


推荐阅读