在 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

总结:

  1. 直接切换:在 psql 中使用 \c <database>
  2. 重新连接:断开当前连接后,连接到目标数据库。
  3. 跨库查询:借助 dblink 扩展处理无需切换的跨库操作。
  4. PostgreSQL 没有类似 MySQL 的 USE <database> 命令,因此切换数据库的方式更依赖客户端或应用程序的连接机制。


postgresql如何切换数据库插图

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台

除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接

本文链接:http://www.choupangxia.com/2025/08/02/postgresql-change-database/