PostgreSQL 命令行客户端
psql 是 PostgreSQL 自带的交互式客户端,既可以直接执行 SQL,也提供 \d、\copy 等元命令。它只是客户端,连接不上时先检查服务端、端口和认证配置。
psql -h 127.0.0.1 -p 5432 -U app -d appdb
psql "postgresql://app@db:5432/appdb?sslmode=require"
psql -c 'SELECT now(), current_user;'
psql -f migration.sql -v ON_ERROR_STOP=1
psql -l # 列出数据库
psql -d appdb -c '\dt+ public.*'
交互式元命令:
\l 列出数据库
\dt 列出当前 schema 的表
\d+ tablename 查看表结构和存储信息
\df 列出函数
\x 切换展开显示(宽行友好)
\copy ... 客户端侧导入导出
\timing on 显示每条语句耗时
\q 退出
事务与脚本:
psql -v ON_ERROR_STOP=1 --single-transaction -f init.sql
psql 不是服务端;connection refused 先看 pg_isready、监听地址和 pg_hba.conf。-h 时走 Unix socket,和走 TCP 的认证规则可能不同;排查连接先确认路径。PGPASSWORD 和 -W 都会带来泄露风险;优先用 ~/.pgpass 或服务文件。\copy 是客户端读写文件,COPY 是服务端读写文件;路径和权限归属完全不同。ON_ERROR_STOP=1,否则默认会继续跑。ROLLBACK 或修正后重试。search_path 不一致会让同名表解析到别的 schema;跨 schema 操作显式写全名。\d 只匹配当前 schema;查别的 schema 用 \dt schema.*。\x、LIMIT 或导出到文件。pg_dump — 逻辑备份pg_restore — 恢复自定义格式备份createdb — 创建数据库