PostgreSQL的psql命令
基础信息
OS版本:Red Hat Enterprise Linux Server release 7.9 (Maipo)
DB版本:16.2
pg软件目录:/home/pg16/soft
pg数据目录:/home/pg16/data
端口:5777
psql
是 PostgreSQL 数据库的命令行界面,允许用户与数据库交互、管理数据库、执行 SQL 语句等。它提供了许多内部命令以及能力来执行复杂的查询和数据库操作。以下是一些常用的 psql
命令:
连接和断开数据库
-
连接到数据库:
psql -d database_name -U user_name
-
断开当前数据库连接:
\q
查看数据库对象
-
列出所有数据库:
\l 或 \list
-
切换当前数据库:
\c database_name
-
列出当前数据库中的所有表:
\dt
-
列出特定模式中的所有表:
\dt schema_name.*
-
显示表的结构:
\d table_name
-
列出所有模式:
\dn
-
列出所有可用的命令和系统视图:
\?
执行 SQL 语句
-
执行 SQL 文件:
psql -d database_name -f file.sql
-
执行 SQL 语句(在
psql
内部):SELECT * FROM table_name;
调整 psql
行为
-
打开或关闭查询结果的分页显示:
\pset pager off # 关闭 \pset pager on # 打开
-
设置输出格式为垂直格式而不是默认的横向格式:
\x
脚本和自动化
-
执行
psql
命令而不进入交互界面:psql -d database_name -c "SELECT * FROM table_name;"
-
在
psql
命令行中执行系统命令:\! ls
-
将查询结果导出到文件:
\o output_file.txt SELECT * FROM table_name; \o
杂项
-
显示当前
psql
版本:\! psql -V
-
获取帮助信息:
- 对于 SQL 命令的帮助:
\h
或\h COMMAND_NAME
- 对于
psql
命令的帮助:\?
- 对于 SQL 命令的帮助:
[pg16@test ~]$ psql -d postgres -U postgres
psql (16.2)
Type "help" for help.postgres=#
postgres=#
postgres=# help
You are using psql, the command-line interface to PostgreSQL.
Type: \copyright for distribution terms\h for help with SQL commands\? for help with psql commands\g or terminate with semicolon to execute query\q to quit
postgres=# \h
Available help:ABORT CLOSE CREATE VIEW DROP USER MAPPINGALTER AGGREGATE CLUSTER DEALLOCATE DROP VIEWALTER COLLATION COMMENT DECLARE ENDALTER CONVERSION COMMIT DELETE EXECUTEALTER DATABASE COMMIT PREPARED DISCARD EXPLAINALTER DEFAULT PRIVILEGES COPY DO FETCHALTER DOMAIN CREATE ACCESS METHOD DROP ACCESS METHOD GRANTALTER EVENT TRIGGER CREATE AGGREGATE DROP AGGREGATE IMPORT FOREIGN SCHEMAALTER EXTENSION CREATE CAST DROP CAST INSERTALTER FOREIGN DATA WRAPPER CREATE COLLATION DROP COLLATION LISTENALTER FOREIGN TABLE CREATE CONVERSION DROP CONVERSION LOADALTER FUNCTION CREATE DATABASE DROP DATABASE LOCKALTER GROUP CREATE DOMAIN DROP DOMAIN MERGEALTER INDEX CREATE EVENT TRIGGER DROP EVENT TRIGGER MOVEALTER LANGUAGE CREATE EXTENSION DROP EXTENSION NOTIFYALTER LARGE OBJECT CREATE FOREIGN DATA WRAPPER DROP FOREIGN DATA WRAPPER PREPAREALTER MATERIALIZED VIEW CREATE FOREIGN TABLE DROP FOREIGN TABLE PREPARE TRANSACTIONALTER OPERATOR CREATE FUNCTION DROP FUNCTION REASSIGN OWNEDALTER OPERATOR CLASS CREATE GROUP DROP GROUP REFRESH MATERIALIZED VIEWALTER OPERATOR FAMILY CREATE INDEX DROP INDEX REINDEXALTER POLICY CREATE LANGUAGE DROP LANGUAGE RELEASE SAVEPOINTALTER PROCEDURE CREATE MATERIALIZED VIEW DROP MATERIALIZED VIEW RESETALTER PUBLICATION CREATE OPERATOR DROP OPERATOR REVOKEALTER ROLE CREATE OPERATOR CLASS DROP OPERATOR CLASS ROLLBACKALTER ROUTINE CREATE OPERATOR FAMILY DROP OPERATOR FAMILY ROLLBACK PREPAREDALTER RULE CREATE POLICY DROP OWNED ROLLBACK TO SAVEPOINTALTER SCHEMA CREATE PROCEDURE DROP POLICY SAVEPOINTALTER SEQUENCE CREATE PUBLICATION DROP PROCEDURE SECURITY LABELALTER SERVER CREATE ROLE DROP PUBLICATION SELECTALTER STATISTICS CREATE RULE DROP ROLE SELECT INTOALTER SUBSCRIPTION CREATE SCHEMA DROP ROUTINE SETALTER SYSTEM CREATE SEQUENCE DROP RULE SET CONSTRAINTSALTER TABLE CREATE SERVER DROP SCHEMA SET ROLEALTER TABLESPACE CREATE STATISTICS DROP SEQUENCE SET SESSION AUTHORIZATIONALTER TEXT SEARCH CONFIGURATION CREATE SUBSCRIPTION DROP SERVER SET TRANSACTIONALTER TEXT SEARCH DICTIONARY CREATE TABLE DROP STATISTICS SHOWALTER TEXT SEARCH PARSER CREATE TABLE AS DROP SUBSCRIPTION START TRANSACTIONALTER TEXT SEARCH TEMPLATE CREATE TABLESPACE DROP TABLE TABLEALTER TRIGGER CREATE TEXT SEARCH CONFIGURATION DROP TABLESPACE TRUNCATEALTER TYPE CREATE TEXT SEARCH DICTIONARY DROP TEXT SEARCH CONFIGURATION UNLISTENALTER USER CREATE TEXT SEARCH PARSER DROP TEXT SEARCH DICTIONARY UPDATEALTER USER MAPPING CREATE TEXT SEARCH TEMPLATE DROP TEXT SEARCH PARSER VACUUMALTER VIEW CREATE TRANSFORM DROP TEXT SEARCH TEMPLATE VALUESANALYZE CREATE TRIGGER DROP TRANSFORM WITHBEGIN CREATE TYPE DROP TRIGGER CALL CREATE USER DROP TYPE CHECKPOINT CREATE USER MAPPING DROP USER
postgres=# \?
General\bind [PARAM]... set query parameters\copyright show PostgreSQL usage and distribution terms\crosstabview [COLUMNS] execute query and display result in crosstab\errverbose show most recent error message at maximum verbosity\g [(OPTIONS)] [FILE] execute query (and send result to file or |pipe);\g with no arguments is equivalent to a semicolon\gdesc describe result of query, without executing it\gexec execute query, then execute each value in its result\gset [PREFIX] execute query and store result in psql variables\gx [(OPTIONS)] [FILE] as \g, but forces expanded output mode\q quit psql\watch [[i=]SEC] [c=N] execute query every SEC seconds, up to N timesHelp\? [commands] show help on backslash commands\? options show help on psql command-line options\? variables show help on special variables\h [NAME] help on syntax of SQL commands, * for all commandsQuery Buffer\e [FILE] [LINE] edit the query buffer (or file) with external editor\ef [FUNCNAME [LINE]] edit function definition with external editor\ev [VIEWNAME [LINE]] edit view definition with external editor\p show the contents of the query buffer\r reset (clear) the query buffer\s [FILE] display history or save it to file\w FILE write query buffer to fileInput/Output\copy ... perform SQL COPY with data stream to the client host\echo [-n] [STRING] write string to standard output (-n for no newline)\i FILE execute commands from file\ir FILE as \i, but relative to location of current script\o [FILE] send all query results to file or |pipe\qecho [-n] [STRING] write string to \o output stream (-n for no newline)\warn [-n] [STRING] write string to standard error (-n for no newline)Conditional\if EXPR begin conditional block\elif EXPR alternative within current conditional block\else final alternative within current conditional block\endif end conditional blockInformational(options: S = show system objects, + = additional detail)\d[S+] list tables, views, and sequences\d[S+] NAME describe table, view, sequence, or index\da[S] [PATTERN] list aggregates\dA[+] [PATTERN] list access methods\dAc[+] [AMPTRN [TYPEPTRN]] list operator classes\dAf[+] [AMPTRN [TYPEPTRN]] list operator families\dAo[+] [AMPTRN [OPFPTRN]] list operators of operator families\dAp[+] [AMPTRN [OPFPTRN]] list support functions of operator families\db[+] [PATTERN] list tablespaces\dc[S+] [PATTERN] list conversions\dconfig[+] [PATTERN] list configuration parameters\dC[+] [PATTERN] list casts\dd[S] [PATTERN] show object descriptions not displayed elsewhere\dD[S+] [PATTERN] list domains\ddp [PATTERN] list default privileges\dE[S+] [PATTERN] list foreign tables\des[+] [PATTERN] list foreign servers\det[+] [PATTERN] list foreign tables\deu[+] [PATTERN] list user mappings\dew[+] [PATTERN] list foreign-data wrappers\df[anptw][S+] [FUNCPTRN [TYPEPTRN ...]]list [only agg/normal/procedure/trigger/window] functions\dF[+] [PATTERN] list text search configurations\dFd[+] [PATTERN] list text search dictionaries\dFp[+] [PATTERN] list text search parsers\dFt[+] [PATTERN] list text search templates\dg[S+] [PATTERN] list roles\di[S+] [PATTERN] list indexes\dl[+] list large objects, same as \lo_list\dL[S+] [PATTERN] list procedural languages\dm[S+] [PATTERN] list materialized views\dn[S+] [PATTERN] list schemas\do[S+] [OPPTRN [TYPEPTRN [TYPEPTRN]]]list operators\dO[S+] [PATTERN] list collations\dp[S] [PATTERN] list table, view, and sequence access privileges\dP[itn+] [PATTERN] list [only index/table] partitioned relations [n=nested]\drds [ROLEPTRN [DBPTRN]] list per-database role settings\drg[S] [PATTERN] list role grants\dRp[+] [PATTERN] list replication publications\dRs[+] [PATTERN] list replication subscriptions\ds[S+] [PATTERN] list sequences\dt[S+] [PATTERN] list tables\dT[S+] [PATTERN] list data types\du[S+] [PATTERN] list roles\dv[S+] [PATTERN] list views\dx[+] [PATTERN] list extensions\dX [PATTERN] list extended statistics\dy[+] [PATTERN] list event triggers\l[+] [PATTERN] list databases\sf[+] FUNCNAME show a function's definition\sv[+] VIEWNAME show a view's definition\z[S] [PATTERN] same as \dpLarge Objects\lo_export LOBOID FILE write large object to file\lo_import FILE [COMMENT]read large object from file\lo_list[+] list large objects\lo_unlink LOBOID delete a large objectFormatting\a toggle between unaligned and aligned output mode\C [STRING] set table title, or unset if none\f [STRING] show or set field separator for unaligned query output\H toggle HTML output mode (currently off)\pset [NAME [VALUE]] set table output option(border|columns|csv_fieldsep|expanded|fieldsep|fieldsep_zero|footer|format|linestyle|null|numericlocale|pager|pager_min_lines|recordsep|recordsep_zero|tableattr|title|tuples_only|unicode_border_linestyle|unicode_column_linestyle|unicode_header_linestyle)\t [on|off] show only rows (currently off)\T [STRING] set HTML <table> tag attributes, or unset if none\x [on|off|auto] toggle expanded output (currently off)Connection\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}connect to new database (currently "postgres")\conninfo display information about current connection\encoding [ENCODING] show or set client encoding\password [USERNAME] securely change the password for a userOperating System\cd [DIR] change the current working directory\getenv PSQLVAR ENVVAR fetch environment variable\setenv NAME [VALUE] set or unset environment variable\timing [on|off] toggle timing of commands (currently off)\! [COMMAND] execute command in shell or start interactive shellVariables\prompt [TEXT] NAME prompt user to set internal variable\set [NAME [VALUE]] set internal variable, or list all if no parameters\unset NAME unset (delete) internal variable
总结
psql
命令提供了一个强大的界面,用于执行和管理 PostgreSQL 数据库。学习和熟悉这些命令可以帮助提高数据库管理和查询的效率。
谨记:心存敬畏,行有所止。