如何通过创建数据库和表来初始化PostgreSQL实例

时间:2019-03-15 06:25:45

标签: postgresql

我需要使用PostgreSQL创建一个新数据库,并且需要 通过创建数据库并初始化“数据库” 表。

我正在考虑创建一个init.sql文件并使用该文件 初始化docker映像时与<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <c:forEach items="${map}" var="entry"> batchNumber = ${entry.key}, value = ${entry.value} <br> </c:forEach> 一起使用。

我需要一个照顾Docker (根据模式版本有条件地创建模式和表)数据库的示例。

我有下面的伪示例,并且希望看到一个真实的Postgres示例。

伪示例:

1)创建不存在的数据库
2)设置或增加数据库设计版本

//创建版本0的表
3)创建表(如果不存在)

//创建版本1表
4)创建将来的版本表并应用表更改

1 个答案:

答案 0 :(得分:2)

CREATE DATABASE只能作为单个语句执行。 因此它不能在函数或DO语句中运行。

You need

DO
$do$
BEGIN
   IF EXISTS (SELECT 1 FROM pg_database WHERE datname = 'mydb') THEN
      RAISE NOTICE 'Database already exists'; 
   ELSE
      PERFORM dblink_exec('dbname=' || current_database()  -- current db
                        , 'CREATE DATABASE mydb');
   END IF;
END
$do$;

A detailed explanation