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

Posted

技术标签:

【中文标题】PostgreSQL:在特定数据库中创建模式【英文标题】:PostgreSQL: Create schema in specific database 【发布时间】:2011-09-24 09:29:30 【问题描述】:

我需要编写一个 sql 脚本,在我刚刚创建的数据库中创建一个新数据库一个新架构。 p>

我该怎么做?我可以以某种方式将当前数据库更改为新数据库吗?或者我可以以某种方式为 CREATE SCHEMA 指定数据库吗?

我使用的是 PostgreSQL 9.0

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

我知道。但是如何在与使用 CREATE DATABASE 创建数据库的 SQL 文件相同的 SQL 文件中执行此操作? @Axel:你连接到数据库。不知道怎么样?简单地做一个pg_dumpall 并阅读它是如何做到的。或使用 \connect。随便哪一个。 @Seth Robertson 您能否在答案中提供一个示例以便我接受? 请记住,\connect 是特定于 psql 的命令。尝试在另一个客户端(例如 pgAdmin3)中执行包含此类命令的 SQL 脚本将不起作用。 OP 在我的评论后添加了psql 标签。【参考方案2】:

使用新用户登录新数据库:

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;

【讨论】:

以上是关于PostgreSQL:在特定数据库中创建模式的主要内容,如果未能解决你的问题,请参考以下文章

带有 Postgresql 的 Grails:无法在适当的模式中创建表

如何使用 init.sql 在 Postgresql 中创建数据库、模式和表

如何在 PostgreSQL 中创建只读用户?

具有特定权限的 Postgresql 用户

Hibernate LocalDateTime:Postgresql 模式生成在外部 Tomcat 中创建类型为“bytea”的列

在 PostgreSQL 中创建/删除索引的用户权限