相关疑难解决方法(0)

模拟CREATE DATABASE如果没有为PostgreSQL提供?

我想创建一个通过JDBC不存在的数据库.与MySQL不同,PostgreSQL不支持create if not exists语法.完成此任务的最佳方法是什么?

应用程序不知道数据库是否存在.它应该检查,如果数据库存在,应该使用它.因此,连接到所需数据库是有意义的,如果由于数据库不存在而导致连接失败,则应创建新数据库(通过连接到默认postgres数据库).我检查了Postgres返回的错误代码,但我找不到任何相同的相关代码.

实现此目的的另一种方法是连接到postgres数据库并检查是否存在所需的数据库并相应地采取措施.第二个是锻炼有点乏味.

有什么方法可以在Postgres中实现这个功能吗?

sql database postgresql ddl jdbc

92
推荐指数
7
解决办法
9万
查看次数

用于在文件中执行pgsql命令的Shell脚本

我试图自动化一组创建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脚本新手.)

编辑

为了进一步澄清这个问题,我想知道:

  1. 如何编写groksqlcommands.sh(一个将从文件运行一组pgsql cmds的bash脚本)
  2. 如何在命令行上基于现有模板创建数据库

postgresql bash psql

29
推荐指数
1
解决办法
8万
查看次数

标签 统计

postgresql ×2

bash ×1

database ×1

ddl ×1

jdbc ×1

psql ×1

sql ×1