Postgres在特定数据库中创建架构

时间:2012-08-14 09:25:58

标签: sql postgresql schema

我有一个建议表单stackoverflow.com在特定数据库中创建模式,如下所示:

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

但我收到的错误如下:

  

错误:语法错误在“\”第2行或附近:\ n \ n \ n \ n \连接foo;            ^

     

*** 错误 ** *

     

错误:“\”

处或附近的语法错误

情况:

登录为postgress
创建用户u1
使用所有者u1创建数据库db1 \连接u1
创建模式s1

请帮我创建特定数据库中的模式。

1 个答案:

答案 0 :(得分:12)

如果 - 且仅当 - 你正在使用psql时,这是有效的:

postgres@berry-pc:~$ psql template1
psql (8.4.10)
Type "help" for help.

template1=# CREATE DATABASE foo;
CREATE DATABASE
template1=# \connect foo;
psql (8.4.10)
You are now connected to database "foo".
foo=# \connect template1
psql (8.4.10)
You are now connected to database "template1".
template1=# DROP DATABASE foo;
DROP DATABASE
template1=# \q

\connect是一个psql命令。这不是普通的SQL,所以你不能在.sql文件中使用它。据我所知,从sql文件中无法做到这一点。这背后的基本原理是,一旦您想要使用不同的数据库,就应该重新连接到不同的数据库。这是用于数据库分离。 MySQL实现use $database语法的原因是因为缺少模式,但PostgreSQL没有这样的命令,因为数据库应该在模式中分离,而不是数据库。