PostgreSQL: 在特定数据库中创建模式

94
我需要编写一个 SQL 脚本,可以在我刚创建的数据库中同时创建一个新的数据库和一个新模式。如何实现呢?是否可以将当前数据库更改为新创建的数据库?或者是否可以指定 CREATE SCHEMA 所用的数据库?我正在使用 PostgreSQL 9.0。
3个回答

124

你可以连接到数据库,并执行“CREATE SCHEMA”语句。这样应该会在该数据库中创建一个新模式。这并不像你想象的那么难 ;) 当你想要从.SQL文件中执行此操作时,可以使用如下所示的\connect命令:

 CREATE DATABASE foo;
 \connect foo;
 CREATE SCHEMA yourschema;

8
知道了。但是我该如何在创建数据库的同一个SQL文件中执行它,使用CREATE DATABASE命令创建的那个文件? - Axel Fontaine
1
@Axel:你需要连接到数据库。不知道怎么做?简单地执行 pg_dumpall 命令并查看它是如何实现的。或者使用 \connect 命令。两种方法都可以。 - Seth Robertson
@Seth Robertson,你能在回答中提供一个例子,这样我就可以接受它了吗? - Axel Fontaine
20
请注意,\connect 是一个仅限于 psql 的命令。如果在其他客户端(例如 pgAdmin3)中尝试执行包含此命令的 SQL 脚本,则无法正常工作。 - Milen A. Radev
3
评论后,OP添加了 psql 标签。 - Milen A. Radev
显示剩余2条评论

4

使用新用户登录New-Database:

postgres=> \connect newdb user1
...
You are now connected to database "newdb" as user "user1".
newdb=> 

在newdb中创建新用户"user1"的模式:

newdb=> CREATE SCHEMA s1;

列出模式:
SELECT * from information_schema.schemata;

0

使用以下命令创建数据库 --CREATE DATABASE test;

使用以下命令进入test数据库 --psql -d test;

在test数据库中创建模式 --create schema if not exists test_schema;


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接