postgresql如何切换数据库
在 PostgreSQL 中,不能直接通过 SQL 命令在当前会话中切换到另一个数据库(类似于 MySQL 中的 USE <database>
)。每次连接都是针对单独的数据库,会话一旦启动,你只能访问连接时指定的数据库。如果需要切换数据库,可以选择以下方法:
方法 1:在 psql
命令行中重新连接到新数据库
使用 \c
或 \connect
命令可以在 psql
客户端中重新连接到一个新的数据库。
语法:
\c <database_name> [<username>]
database_name
:要切换的目标数据库名称。[username]
:可选参数,指定要使用的 PostgreSQL 用户。
示例:
如果当前连接到数据库 db1
,想切换到 db2
,可以输入以下命令:
\c db2
或者指定连接用户(假设用户为 postgres
):
\c db2 postgres
切换后,你会看到提示信息,说明已连接到新的数据库:
You are now connected to database "db2" as user "postgres".
方法 2:退出当前连接并重新连接到目标数据库
如果不是在 psql
交互终端中,你需要通过终端或程序断开当前连接并重新建立新的连接。
在 psql
中从终端连接:
使用 psql
重新连接目标数据库:
psql -U <username> -d <database_name>
示例(连接到数据库 db2
,使用用户 postgres
):
psql -U postgres -d db2
在应用程序中重新连接:
在代码中,需要关闭当前连接,然后通过新的数据库名称重新建立连接。例如:
- Golang (pq / pgx driver):
conn, err := pgx.Connect(context.Background(), "postgres://user:password@localhost/db2")
- Python (psycopg2):
conn = psycopg2.connect(database="db2", user="postgres", host="localhost", password="password")
方法 3:配置多个连接实例以灵活处理多个数据库
如果需要在多个数据库之间频繁切换,推荐在应用程序中建立多连接池(比如对 db1
和 db2
实例分别创建连接对象),在执行操作时动态选择需要的数据库。
方法 4:跨数据库操作(推荐单实例多数据库)
如果需要查询其他数据库中的数据,可以在 PostgreSQL 中使用 dblink
扩展进行跨库查询,而无需切换数据库。
1. 在当前数据库中安装 dblink
:
运行以下 SQL 命令创建 dblink
扩展:
CREATE EXTENSION dblink;
2. 使用 dblink
查询目标数据库:
SELECT * FROM dblink('dbname=db2 user=postgres password=your_password',
'SELECT * FROM target_table')
AS t(id INT, name TEXT);
dbname=db2
:目标数据库名称。user
和password
:目标数据库的登录凭据。
这样可以将结果直接引入到当前会话的数据库中,而无需切换数据库。
方法 5:切换 PostgreSQL 默认数据库
如果只是经常切换或访问默认数据库(比如 postgres
数据库),通常直接连接到目标数据库时指定即可:
psql -d postgres
总结:
- 直接切换:在
psql
中使用\c <database>
。 - 重新连接:断开当前连接后,连接到目标数据库。
- 跨库查询:借助
dblink
扩展处理无需切换的跨库操作。 - PostgreSQL 没有类似 MySQL 的
USE <database>
命令,因此切换数据库的方式更依赖客户端或应用程序的连接机制。
关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台
除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接
本文链接:http://www.choupangxia.com/2025/08/02/postgresql-change-database/