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 中创建数据库、模式和表
Hibernate LocalDateTime:Postgresql 模式生成在外部 Tomcat 中创建类型为“bytea”的列