Postgresql 如何在单个文件中编写ddl,以便在postgres中快速创建数据库、模式、表和角色对象?

Postgresql 如何在单个文件中编写ddl,以便在postgres中快速创建数据库、模式、表和角色对象?,postgresql,postgresql-9.2,Postgresql,Postgresql 9.2,我绝对是博士后的新手。我使用的是9.2版。我试图编写一个脚本来创建几个角色、一个数据库、一个模式和一个基本表。我尝试在pgAdminIII中使用sql编辑器,但一直遇到如下错误: ERROR: CREATE DATABASE cannot be executed from a function or multi-command string 我从其他帖子中了解到,这并不是在postgres中如何做到这一点,但我还没有弄清楚的是,如何在单个文件中组织ddl,以构建dbs、模式、角色、表等的集合

我绝对是博士后的新手。我使用的是9.2版。我试图编写一个脚本来创建几个角色、一个数据库、一个模式和一个基本表。我尝试在pgAdminIII中使用sql编辑器,但一直遇到如下错误:

ERROR:  CREATE DATABASE cannot be executed from a function or multi-command string
我从其他帖子中了解到,这并不是在postgres中如何做到这一点,但我还没有弄清楚的是,如何在单个文件中组织ddl,以构建dbs、模式、角色、表等的集合

下面是我目前正在尝试创建的基本db布局示例:

CREATE ROLE "edus-db-admins-dev"
  NOSUPERUSER INHERIT CREATEROLE;

CREATE ROLE "edus-db-admin-dev" LOGIN
PASSWORD 'blahblahblah'
NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
GRANT "edus-db-admins-dev" TO "edus-db-admin-dev";

CREATE ROLE "edus-esb-loggers"
  NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;

CREATE ROLE "edus-esb-logger" LOGIN
  PASSWORD 'blahblahblah'
  NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;



CREATE DATABASE edus
  WITH OWNER = "edus-db-admin-dev"
     ENCODING = 'UTF8'
     TABLESPACE = pg_default
     LC_COLLATE = 'English_United States.1252'
     LC_CTYPE = 'English_United States.1252'
     CONNECTION LIMIT = -1;

CREATE SCHEMA eduspubservice
  AUTHORIZATION "edus-db-admin-dev";



CREATE TABLE eduspubservice.logs
(
  date date NOT NULL,
  level character varying(10),
  category character varying(100),
  logger character varying(100),
  method character varying(100),
  message character varying(10000)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE eduspubservice.logs
  OWNER TO "edus-esb-logger";

我不使用pgAdmin,因此无法与之对话,但您可以从命令行将脚本加载到db中,如下所示:

psql -d postgres -U postgres -f your_file_name.sql
我假设pgAdmin允许您连接到postgres admin数据库并对其运行SQL脚本