我想创建一个通过JDBC不存在的数据库.与MySQL不同,PostgreSQL不支持create if not exists语法.完成此任务的最佳方法是什么?
应用程序不知道数据库是否存在.它应该检查,如果数据库存在,应该使用它.因此,连接到所需数据库是有意义的,如果由于数据库不存在而导致连接失败,则应创建新数据库(通过连接到默认postgres数据库).我检查了Postgres返回的错误代码,但我找不到任何相同的相关代码.
实现此目的的另一种方法是连接到postgres数据库并检查是否存在所需的数据库并相应地采取措施.第二个是锻炼有点乏味.
有什么方法可以在Postgres中实现这个功能吗?
我试图自动化一组创建TEMPLATE数据库的过程.
我有一组文件(file1,file2,... fileN),每个文件都包含一组创建TEMPLATE数据库所需的pgsql命令.
该文件的内容(createdbtemplate1.sql)看起来大致如下:
CREATE DATABASE mytemplate1 WITH ENCODING 'UTF8';
\c mytemplate1
CREATE TABLE first_table (
--- fields here ..
);
-- Add C language extension + functions
\i db_funcs.sql
Run Code Online (Sandbox Code Playgroud)
我希望能够编写一个shell脚本来执行文件中的命令,这样我就可以编写这样的脚本:
# run commands to create TEMPLATE db mytemplate1
# ./groksqlcommands.sh createdbtemplate1.sql
for dbname in foo foofoo foobar barbar
do
# Need to simply create a database based on an existing template in this script
psql CREATE DATABASE $dbname TEMPLATE mytemplate1
done
Run Code Online (Sandbox Code Playgroud)
有关如何做到这一点的任何建议?(你可能已经猜到了,我是一个shell脚本新手.)
为了进一步澄清这个问题,我想知道: