psql 是 PostgreSQL 的交互式命令行客户端——用于连接数据库、运行查询、检查模式和管理数据库。它具有特殊的 meta-commands(以 \ 开头)用于导航和管理,超越了运行 SQL 的功能。
连接
psql -U username -d database_name -h host -p 5432 # connect with options
psql postgresql://user:pass@host:5432/dbname
psql mydb
psql 是 PostgreSQL 的交互式命令行客户端——用于连接数据库、运行查询、检查模式和管理数据库。它具有特殊的 meta-commands(以 \ 开头)用于导航和管理,超越了运行 SQL 的功能。
psql -U username -d database_name -h host -p 5432 # connect with options
psql postgresql://user:pass@host:5432/dbname
psql mydb
\l list all databases
\c dbname connect to a database
\dt list TABLES in the current database
\d tablename describe a table (columns, types, indexes, constraints)
\di list indexes
\dn list schemas
\du list roles/users
\df list functions
\dv list views
\x toggle expanded display (vertical — readable for wide rows)
\timing toggle query timing
\? help on meta-commands
\h SELECT help on a SQL command
\q quit
这些 \ meta-commands 让您能够快速探索和管理数据库——\dt(列出表)、\d tablename(检查表的结构)和 \l(列出数据库)是经常使用的。
SELECT * FROM users LIMIT 5; -- run SQL directly (end with ;)
psql -d mydb -f script.sql -- run a SQL FILE
psql -d mydb -c "SELECT count(*) FROM users" -- run a single command and exit
\i script.sql -- run a file from within psql
\copy users TO 'users.csv' CSV HEADER -- export to CSV (client-side)
\x auto auto-switch to vertical display for wide results
\timing on show how long each query takes
\e open the last query in an editor
\set, \pset configure variables and output formatting
psql 是直接与 PostgreSQL 协作的必不可少的日常工具——开发人员和 DBA 经常使用它来连接、查询、检查和管理数据库,因此了解其要点是 Postgres 工作的实用基础知识。
虽然存在 GUI 工具,但 psql 是通用的、始终可用的界面(在任何有 Postgres 的地方都存在),其 meta-commands(\)使其对快速数据库探索和纯 SQL 无法方便实现的管理特别强大:\dt(列出表)、\d tablename(检查表的完整结构——列、类型、索引、约束——这是经常需要的)、\l(列出数据库)、\du(列出用户/角色)和其他命令让您能够快速导航和理解数据库。
了解如何连接(带选项或 URL)、运行查询和脚本(用于文件的 -f、用于一次性命令的 -c)、使用 meta-commands 进行检查以及有用的设置(\x 用于易读的宽行显示、\timing 用于查询计时)是任何 Postgres 开发人员或管理员的日常实用知识。
由于 psql 是 PostgreSQL 的标准、普遍的命令行界面——用于开发、调试、管理、脚本编写和探索——理解其基本命令和工作流是有价值的、频繁应用的知识,使与 Postgres 的协作高效,这是任何直接与数据库协作的人都应具备的基本能力。
一个包含详细解答的 IT 面试题库——从初级到高级。
捐赠