我绝对是postgres的新手。我使用的是9.2版本。我正在尝试编写一个脚本来创建一些角色,一个数据库,一个模式和一个基本表。我尝试在pgAdminIII中使用sql编辑器但是仍然遇到像这样的错误:
ERROR: CREATE DATABASE cannot be executed from a function or multi-command string
我从其他帖子中了解到这根本不是如何在postgres中执行此操作,但我还没想到的是有人如何在单个文件中组织他们的ddl来构建dbs,模式,角色的集合,桌等等。
以下是我正在尝试创建的基本数据库布局的示例:
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";
答案 0 :(得分:1)
我不使用pgAdmin所以我不能说它,但是从命令行你可以将脚本加载到db中,如下所示:
psql -d postgres -U postgres -f your_file_name.sql
我假设pgAdmin允许您连接到postgres管理数据库并针对它运行SQL脚本。