0

私は間違いなくpostgresが初めてです。バージョン9.2を使用しています。いくつかのロール、データベース、スキーマ、および基本テーブルを作成するスクリプトを作成しようとしています。pgAdminIII で sql エディターを使用してみましたが、次のようなエラーが発生し続けます。

ERROR:  CREATE DATABASE cannot be executed from a function or multi-command string

他の投稿から、これはpostgresでこれを行う方法ではないことを理解していますが、私が理解していないのは、誰かが自分のddlを単一のファイルに整理して、データベース、スキーマ、ロール、テーブルなどのコレクションを構築する方法です. .

現在作成しようとしている基本的なデータベース レイアウトのサンプルを次に示します。

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";
4

1 に答える 1

1

私はpgAdminを使用していないので話すことはできませんが、コマンドラインから次のようにスクリプトをdbにロードします:

psql -d postgres -U postgres -f your_file_name.sql

pgAdmin を使用すると、postgres 管理データベースに接続して、それに対して SQL スクリプトを実行できると思います。

于 2013-07-18T22:28:01.973 に答える