PostgreSQL‎ > ‎

psql

Logging Output

The psql -L and -o options don't show timings. Just pipe to tee!
psql -aX -f test.sql 2>&1 | tee -a test.log

Or if you want to have dynamic SQL in a bash script, for example:
psql -aX -d btfprod <<EOSQL 2>&1 | tee -a test.log
        SELECT now();
EOSQL


Dynamic/Interactive DDL

-- Prompt for a base Role Name, then append suffixes and create roles based on variable usage
\prompt 'Role Name: ' role_name

\set admin_role :role_name'_admin'
\set read_role :role_name'_read'
\set write_role :role_name'_write'
\set delete_role :role_name'_write'

-- Create the roles
CREATE ROLE :admin_role
    NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
CREATE ROLE :read_role
    NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
CREATE ROLE :write_role
    NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
CREATE ROLE :delete_role
    NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
Comments