在 PostgreSQL 中列出和切换数据库
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 -l3. 切换数据库
与其他一些 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 salesdb4. 高效多数据库工作流技巧
a. 使用 .pgpass 实现无密码切换
创建一个 .pgpass 文件以自动化身份验证:
hostname:port:database:username:password确保它具有正确的权限:
chmod 600 ~/.pgpassb. 使用 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
psql5. 使用 PgAdmin 和其他 GUI
在 PgAdmin 中:
点击 server group。
右键单击 → Connect 到数据库。
使用 Query Tool 下拉菜单切换数据库(每个 DB 创建一个新 tab)。
许多工具(DBeaver、DataGrip)都允许通过带 tab 的 database views 进行多个连接。
6. 额外提示:检查当前数据库
在 psql 中,查找您当前的数据库:
SELECT current_database();或者使用:
conninfo结论
虽然 PostgreSQL 不像其他一些 SQL engines 那样允许在 session 内切换数据库,但其强大的连接模型确保了清晰、一致的访问控制和资源管理。通过掌握列出数据库的技巧并采用智能的重新连接实践,您可以在任何环境中高效地管理和切换 PostgreSQL databases——无论是通过 CLI、GUI 还是 scripts。


