在 PostgreSQL 中列出和切换数据库

热门:
升级您的服务器配置! 申请 AVA 并使用 立减 15%
使用优惠码:

PostgreSQL 中列出和切换数据库

PostgreSQL 是一个强大的开源对象关系数据库系统,提供了丰富的工具和功能来高效管理数据库。无论您是数据库管理员还是后端开发人员,了解如何列出数据库并在数据库之间切换,都是在多数据库环境中进行操作的基础。

1. 前提条件

在开始之前,请确保:

  • PostgreSQL 已安装在您的 系统 上(psql 可访问)。

  • 您拥有适当的权限(例如,superuser 或具有连接权限的 role)。

  • 您可以使用有效用户通过 PostgreSQL server 进行身份验证。

2. 在 PostgreSQL 中列出数据库

🔍 方法 1:使用 psql Meta-command

启动 psql 交互式终端并运行:

l

或者使用展开形式:

list

这将返回所有数据库的列表:

  • Name

  • Owner

  • Encoding

  • Collation

  • Ctype

  • Access privileges

 方法 2:使用 SQL Query

或者,运行此 SQL 语句:

SELECT datname FROM pg_database WHERE datistemplate = false;

此 query 会排除 template databases(template0、template1),并显示用户创建的 databases。

🛠️ 方法 3:命令行 Shell

在 psql 之外,从您的 terminal 中:

psql -U postgres -c "l"

您也可以使用 psql -l

psql -l

3. 切换数据库

与其他一些 RDBMSs(例如 MySQL)不同,PostgreSQL 不支持在同一 session 内切换数据库,不能使用类似 USE dbname; 的命令。

 为什么?

PostgreSQL 会在 登录时 建立到特定数据库的连接。要访问另一个数据库,您必须 断开并重新连接

 推荐方法:

退出当前 session 并重新连接到所需的数据库:

q -- Quit current psql session

然后:

psql -U username -d target_database

或者直接:

psql -U username -d target_database -h hostname -p port

示例:

psql -U admin -d salesdb

4. 高效多数据库工作流技巧

a. 使用 .pgpass 实现无密码切换

创建一个 .pgpass 文件以自动化身份验证:

hostname:port:database:username:password

确保它具有正确的权限:

chmod 600 ~/.pgpass

 b. 使用 Shell Scripts 自动化

创建一个用于列出和切换的 script:

#!/bin/bash
echo "Available Databases:"
psql -U postgres -c "l"
read -p "Enter target DB: " db
psql -U postgres -d "$db"

 c. 使用 Environment Variables

导出默认 DB 和 user 以便更快切换:

export PGDATABASE=mydb
export PGUSER=myuser
psql

5. 使用 PgAdmin 和其他 GUI

在 PgAdmin 中:

  1. 点击 server group。

  2. 右键单击 → Connect 到数据库。

  3. 使用 Query Tool 下拉菜单切换数据库(每个 DB 创建一个新 tab)。

许多工具(DBeaver、DataGrip)都允许通过带 tab 的 database views 进行多个连接。

6. 额外提示:检查当前数据库

psql 中,查找您当前的数据库:

SELECT current_database();

或者使用:

conninfo

结论

虽然 PostgreSQL 不像其他一些 SQL engines 那样允许在 session 内切换数据库,但其强大的连接模型确保了清晰、一致的访问控制和资源管理。通过掌握列出数据库的技巧并采用智能的重新连接实践,您可以在任何环境中高效地管理和切换 PostgreSQL databases——无论是通过 CLI、GUI 还是 scripts。