如何在psql中切换数据库?

1488
在MySQL中,我使用了use database_name;命令。
那么在psql中,等价的命令是什么?

2
好的,这是关于 psql 的问题,它是 PostgreSQL 的前端吗? - Peter Mortensen
3
一个MySQL的“数据库”实际上是一个模式。因此,在大多数情况下,MySQL的“数据库”最好映射到Postgres中的模式。如果这样做了,您可以使用set schema 'schema_name';set search_path to schema_name;更改当前模式。 - user330315
通常情况下,模式位于数据库之下。 - mckenzm
15个回答

2248

在PostgreSQL中,您可以使用客户端工具psql的\connect元命令:

\connect DBNAME

或者简而言之:

\c DBNAME

168
这只是一个psql命令,在Postgres本身中,没有“切换”的方式。事实上,在MySQL的情况下,psql并未进行“切换”,而只是关闭一个连接并打开另一个连接。 - rfusca
17
用SQL无法做到吗? - Borys
11
这个能在 .sql 文件中的 SQL 语句之间起作用吗?例如,我可以有 CREATE DATABASE mydb; 后面跟着 \connect mydb 吗? - J86
4
对于“切换”架构,请使用set searchpath=schema_name - Hans Ginzel
3
@HansGinzel修改模式不是修改数据库,这两者有很大的区别! - Peter
显示剩余6条评论

198
您可以使用\c <数据库名称>\connect <数据库名称>连接到数据库。

108

在PSQL提示符下,你可以执行:

\connect (or \c) dbname

44

使用 \c 数据库名 或者 \connect 数据库名

(在 psql 13.3 上使用)


1
这基本上是接受答案的复制。 - Akaisteph7

39

使用psql连接时,您可以选择数据库。当从脚本中使用时,这非常方便:

sudo -u postgres psql -c "CREATE SCHEMA test AUTHORIZATION test;" test

5
谢谢,我快要发疯了... :) - Richard

21

虽然问题中没有明确说明目的是连接到特定的模式/数据库,但这是目的。

另一个选项是直接连接到模式。 示例:

sudo -u postgres psql -d my_database_name

来自man psql的来源:

-d dbname
--dbname=dbname
   Specifies the name of the database to connect to. This is equivalent to specifying dbname as the first non-option argument on the command line.

   If this parameter contains an = sign or starts with a valid URI prefix (postgresql:// or postgres://), it is treated as a conninfo string. See Section 31.1.1, “Connection Strings”, in the
   documentation for more information.

18

\l 用于数据库列表 \c DatabaseName 用于切换到指定的数据库 \df 用于查看特定数据库中存储的过程


14
使用psql的元命令\c或\connect [dbname[username][host][port]] | conninfo(参见文档)。
示例:\c MyDatabase 请注意,\c\connect元命令区分大小写

11

使用下面的语句切换到存储在您的PostgreSQL RDMS内的不同数据库。

\c databaseName

10
您还可以按以下方式使用不同的ROLE连接到数据库。
\connect DBNAME ROLENAME;

或者
\c DBNAME ROLENAME;

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