psql 命令
常用命令示例:
输入psql --help 查看帮助文档
General options:
-f, --file=FILENAME execute commands from file, then exit(执行文件中的命令,然后退出)
示例:
创建测试脚本
-- 创建测试表
CREATE TABLE test (
id SERIAL PRIMARY KEY,
value TEXT NOT NULL
);
-- 插入数据
INSERT INTO test (value) SELECT 'test' || i::text FROM generate_series(1, 1000000) AS i;
-- 更新数据
UPDATE test SET value = 'updated_test' WHERE id IN (SELECT id FROM test ORDER BY random() LIMIT 1000);
-- 插入数据
INSERT INTO test (value) SELECT 'test' || i::text FROM generate_series(1, 1000) AS i;
-- 删除数据
DELETE FROM test WHERE id IN (SELECT id FROM test ORDER BY random() LIMIT 1000);
将 脚本上传至/home/postgres/text.sql
键入 psql -f /home/postgres/text.sql
-c, --command=COMMAND run only single command (SQL or internal) and exit(仅运行单个命令(SQL或内部命令)然后退出)
psql -c "drop table test;"
-d, --dbname=DBNAME database name to connect to (default: "postgres")(链接的数据库名称 默认是“postgres” )
在没有约束链接用户名和数据库名 默认均是 postgres 当约束链接用户名时,默认链接和用户名同名的数据库
键入 psql
创建同名用户,数据库
create user r1 login ;
create database r1;
键入 psql -U r1 此时登录默认为r1数据库
键入 psql -U r1 -d postgres
指定登录数据库postgres
-l, --list list available databases, then exit(列出可用数据库,并退出)
-v, --set=, --variable=NAME=VALUE
set psql variable NAME to VALUE
(e.g., -v ON_ERROR_STOP=1)(给变量名赋值)
键入:psql -v v1="h" -c "insert into test (value) values(':v1');"
-V, --version output version information, then exit(打印版本信息并退出)
-X, --no-psqlrc do not read startup file (~/.psqlrc)(不读取启动文件)
-1 ("one"), --single-transaction
execute as a single transaction (if non-interactive)
-?, --help[=options] show this help, then exit
--help=commands list backslash commands, then exit
--help=variables list special variables, then exit
Input and output options:(输入或者输出的控制参数)
-a, --echo-all echo all input from script(把所有非空输入行按照它们被读入的形式打印到标准输出(不适用于交互式行读取))
-b, --echo-errors echo failed commands(把失败的 SQL 命令打印到标准错误输出。)
-e, --echo-queries echo commands sent to server(把发送到服务器的所有 SQL 命令复制到标准输出)
-E, --echo-hidden display queries that internal commands generate(回显\d
以及其他反斜线命令生成的实际查询。可以用它来学习psql的内部操作)
-L, --log-file=FILENAME send session log to file(将回话日志保存为文本)
-n, --no-readline disable enhanced command line editing (readline)(禁用增强的命令行编辑)
-o, --output=FILENAME send query results to file (or |pipe)(将命令输出结果保存到指定的文件中 或者使用|管道符)
-q, --quiet run quietly (no messages, only query output)(静默状态运行(没有消息,只有查询输出))
-s, --single-step single-step mode (confirm each query)(单步提交模式)
Output format options:
-A, --no-align unaligned table output mode(不对齐表输出模式)
--csv CSV (Comma-Separated Values) table output mode(对输出脚本为CSV格式默认使用逗号分隔)
-F, --field-separator=STRING
field separator for unaligned output (default: "|")(输出脚本默认采用管道符分隔)
-H, --html HTML table output mode(默认输出采用HTML格式)
-R, --record-separator=STRING
record separator for unaligned output (default: newline)(未对齐输出的记录分隔符(默认值: 换行))
-t, --tuples-only print rows only(不带表头打印)
-T, --table-attr=TEXT set HTML table tag attributes (e.g., width, border)(设置 HTML 表格标签属性(例如,宽度,边框))
-x, --expanded turn on expanded table output(打开扩展表输出)
-z, --field-separator-zero
set field separator for unaligned output to zero byte(将未对齐输出的字段分隔符设置为零字节)
-0, --record-separator-zero
set record separator for unaligned output to zero byte(将未对齐输出的记录分隔符设置为零字节)
Connection options:
-h, --host=HOSTNAME database server host or socket directory (default: "local socket")(指定数据库IP地址,默认是localhost)
-p, --port=PORT database server port (default: "5432")(指定端口号 默认“5432”)
-U, --username=USERNAME database user name (default: "postgres")(指定用户名 默认“postgres”)
-w, --no-password never prompt for password(永不提示输入密码)
-W, --password force password prompt (should happen automatically)(指定用户密码)
键入 psql -U pg01 -h 10.0.0.200 -d postgres -p 15432 -W 链接远程数据库10.0.0.200
PostgreSQL 元命令
\set ECHO_HIDDEN on
方法二 在是用psql进入数据库的时候加入参数E
psql -E
\dt
\d[S+] | 列出表,视图和序列,其中 S 表示包含系统对象,+表示列 出详细信息 |
\d[S+] 名称 | 描述表,视图,序列,或索引 |
\db[+] [schemaname] | 列出表空间 |
\di[S+] [schemaname] | 列出索引 |
\dp [schemaname] | 列出表,视图和序列的访问权限(\z 和相同) |
\ds[S+] [schemaname] | 列出序列 |
\du[+][参数] | 列出角色 |
\l[+][参数] | 列出所有的数据库 |
\?[参数] | 获得 psql 的帮助 |
\h[参数] | 获取语法的帮助 |
psql -c shellcommand | 执行shell命令 |
psql < | 通过 psql 执行 sql 文件,常用于(pg_restore程序) |
\c (database)(username) | 切换数据库、用户 单独见图\c显示当前所链接的数据库和 用户信息 |
\timing on | 显示 每一次执行SQL的执行的时间 |
\timing off | 关闭每一次执行SQL的执行的时间的展示 |
\dn[参数] | 列出所有的 schema |
\db[参数] | 显示所有的表空间 |
\du[参数] | 列出所有的角色或用户 |
\dp[参数] | 显示权限分配情况 |
\x[参数] | 打开行列互换显示 |
\set AUTOCOMMIT off | 关闭AC功能 |
\i (command) | psql 控制台内执行shell命令 |
\s | 来查看和调用执行过的历史 命令。 |
\C [参数] | 设置下一句查询结果的标题,这个命令等效于 |
\cd [ | 把当前工作目录改为 |
\conninfo | 查看当前连接数据库的连接信息 |
\copy | 复制指令,常用于导入或者导出查询结果 |
\copyright | 显示PostgreSQL的版权以及发布条款。 |
\da[S/+][参数] | 列出聚集函数,以及它们的返回类型和它们所操作的数据类型。 |
\da+[参数] | 列出聚集函数,以及它们的返回类型和它们所操作的数据类型 |
\dAc[+][参数] | 列出运算符类,每个运算符类别及其关联的运算符系列和所有者 |
\dAf[+][参数] | 列出与名称与该模式匹配的输入类型关联的运算符系列。 如果将 |
\dAo[+][参数] | 列出与运算符系列关联的运算符,列出名称与该模式匹配的运算符系列的成员。 如果将 |
\dAp[+][参数] | 列出名称与该模式匹配的运算符系列的函数。 如果将 |
\dC[+][参数] | 列出类型转换。列出源类型和目标类型匹配该模式的转换。如果在命令名称后面追加 |
\dd[S][参数] | 显示指定对象的约束、操作符类、操作符族、规则以及触发器类型对象的注释 |
\dD[S+][参数] | 列出域, |
\dt[S+][参数] | 展示数据库中的表 |
\dE[S+][参数] | 展示数据库中的外部表fdw(关注博主,后续会讲解外部表的创建方式) |
\di[S+][参数] | 展示数据库中的索引 |
\dm[S+][参数] | 展示数据库中的物化视图 |
\dv[S+][参数] | 展示数据库中的视图 |
\ds[S+][参数] | 展示数据库中的序列 |
如有对上述相关术语或者操作不理解的 欢迎私信咨询
如果有帮助,麻烦点赞 关注。