我需要能够从.sql使用 .bashrc 执行文件的 bash shell 传递环境变量psql。
psql我正在运行的命令是:
su postgres -c "psql -v ON_ERROR_STOP=1 -v dbname=example -v dbuser=example -e" < ./create-db.sql
Run Code Online (Sandbox Code Playgroud)
我放置的位置example通常分别设置为$DATABASE_NAME和DATABASE_USER,在执行命令之前在 bash 脚本中设置psql。
该create-db.sql文件是:
\connect postgres
DROP DATABASE IF EXISTS :dbname;
DO $$BEGIN
CREATE USER :dbuser;
EXCEPTION WHEN duplicate_object THEN
RAISE NOTICE 'user already exists';
END$$;
ALTER ROLE :"dbuser" SET search_path TO :"dbname",public;
CREATE DATABASE :"dbname"
OWNER=:dbuser
ENCODING=UTF8
LC_COLLATE='en_US.UTF-8'
LC_CTYPE='en_US.UTF-8'
TEMPLATE=template0;
\connect :"dbname"
CREATE SCHEMA …Run Code Online (Sandbox Code Playgroud)