2012-08-14 82 views
6

我有一個建議的形式stackoverflow.com在特定的數據庫中創建架構如下:的Postgres在特定數據庫創建模式

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

但我得到的錯誤如下:

ERROR: syntax error at or near "\" LINE 2: \connect foo; ^

*** Error ***

ERROR: syntax error at or near "\"

現狀:

登錄爲postgress
創建用戶U1
創建數據庫DB 1所有者U1
\連接U1
創建模式S1

請幫我在一個特定的數據庫創建模式。

+0

你如何連接到數據庫?你用'psql'命令行工具來做這件事嗎? – 2012-08-14 09:37:13

回答

9

這工作,如果 - 且僅當 - 你正在使用的psql:

[email protected]:~$ 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沒有這樣的命令,因爲數據庫應該在模式中而不是數據庫中分開。