【发布时间】:2021-11-07 09:19:41
【问题描述】:
我在一个 shell 脚本中有以下代码,它在 docker 容器中初始化 postgres 数据库:
if [ "$ENV" == "development" ];
then
psql --username "postgres" --dbname "postgres" <<EOSQL
SELECT 'CREATE DATABASE $DATABASE' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = '$DATABASE');\gexec
\connect "$DATABASE";
DO \$\$
BEGIN
-- Some stuff
END
\$\$;
-- Other stuff
EOSQL
else
psql --host "$HOST" --username "postgres" --dbname "postgres" <<EOSQL
SELECT 'CREATE DATABASE $DATABASE' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = '$DATABASE');\gexec
\connect "$DATABASE";
DO \$\$
BEGIN
-- Some stuff
END
\$\$;
-- Other stuff
EOSQL
fi
在if 和else 语句中,SQL 查询是相同的,我想放入一个变量,这样就不必重复了。
我尝试使用QUERY="...",然后使用psql ... -c "$QUERY",但在\ 字符上出现错误。
有没有办法将此多行 SQL 查询存储在变量中并使用 psql 运行它
【问题讨论】:
标签: postgresql bash shell psql