Create a database if not exists in PostgreSQL
Unlike MySQL et al., PostgreSQL does not support the
CREATE ... IF NOT EXISTS syntax for databases. This can be, however, simulate in
psql with the
SELECT 'CREATE DATABASE <your db name>' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = '<your db name>')\gexec
\gexec sends the current query buffer to the server, then treats each column of each row of the query's output (if any) as a SQL statement to be executed.
\gexec cannot be used with the
-c option in
Another alternative that is convenient for shell scripts:
psql -U postgres -tc "SELECT 1 FROM pg_database WHERE datname = '<your db name>'" | grep -q 1 | psql -U postgres -c "CREATE DATABASE <your db name>"