当前位置: 首页 > news >正文

PostgreSQL psql工具使用方法

列出所有数据库

psql -l

连接数据库

psql -h <host or ip> -p <port> [数据库名称] [用户名称]

这些也可以通过环境变量指定:示例如下
```
export PGDATABASE=xxx
export PGHOST=xxx.xxx.xxx.xxx
export PGPORT=xxxx
export PGUSER=xxx
```

设置环境变量后,执行psql相当于执行

\l
连接到指定数据库

\c 库名
psql的常用命令
“\h” 命令
查询SQL语句的语法
\h
使用"\h" 命令可以查看各种SQL语句的语法,还是比较方便的。

“\d” 命令
查看表

\d [ pattern ]
\d [ pattern ]+
显示每个匹配"pattern"(表、视图、索引、序列)的信息,包括对象中所有的列,各列的数据类型、表空间和所有的特殊属性等。

# 列出所有表
\d

# 查看表结构
\d t

# 查看索引信息
\d t_pkey

# 也可以使用通配符,如'*' '?'等
\d x?

# 使用\d + 可以更详细,比如:所有与表的列关联的注释,以及表中出现的OID
\d+ t

# 只显示匹配的表
\dt

# 只显示索引
\di

# 只显示序列
\ds

# 只显示视图
\dv

# 显示函数
\df

# 列出所有的schema
\dn

# 显示所有的表空间
\db

列出数据库中所有的角色或用户
\du
或
\dg

显示表权限分配
\dp t

显示执行SQL语句的时间
\timing on
select count(*) from t

指定客户端字符集
\encoding gbk
\encoding utf8

格式化输出命令"\pset"
\pset [ option [ value ] ]
根据命令后面的"option"与"value"的不同可以设置很多种不同的输出格式。

带有边框
\pset border 2
select * from t

不带任何边框的内容
\pset border 0
select * from t

psql中默认输出是\pset border 1
\pset border 0:表示输出内容无边框
\pset border 1:表示输出内容只有内边框
\pset border 2:表示输出内容内外都有边框
分隔符

\pset format unaligned
select * from t
默认分隔符是"|",可以使用"\pset filedsep" 来设置分隔符,如改成TAB分隔符:

\pset filedsep '\t'
select * from t
还可以将结果输出到一个文件中,使用"\o" :

\pset format unaligned
\t # 去掉表头信息
\o test.txt
select * from t
"\x" 命令
使用 "\x" 可以把按行展示的数据变成按列展示,与MySQL中命令后面加 "\G" 类似

\x
select * from t
执行存储在外部文件中的SQL命令
命令 "\i <文件名>" 用于执行存储在文件中的SQL语句或命令

\x
\i test.sql
也可以在psql命令行中加 "-f " 来执行文件中的SQL

psql -x -f test.sql
其中命令行的 "-x" 等同psql交互式模式的 "\x"

编辑模式
编辑命令 "-e" 可以用于编辑文件,也可以编辑已存在的函数或视图定义,输入 "-e" 后会调用一个编辑器,与vim一样,如果不带任何参数则生成一个临时文件,前面执行的最后一条命令会出现在临时文件中,当编辑完成后退出编辑器并回到psql中时会立即执行该命令

\e
"\e" 后面也可以指定一个文件名,但要求这个文件必须存在,否则会报错。
也可以用 "\ef" 来编辑一个函数的定义,如果 "\ef" 后面不跟任何参数,则会出现一个编辑函数的模板,如果后面跟一个函数名,则函数定义的内容会出现在编辑器中,保存退出后,再输入 ";" 就会执行所创建函数的SQL语句
同样如果输入 "\ev" 则是对视图进行编辑。

需要注意,退出编辑器后,要输入 "\reset" 来清楚psql的命令缓冲区,防止误执行创建的函数与视图

\ef
\ev
\reset
输出信息的 "\echo" 命令
与shell一样,"\echo" 会输出一行信息

\echo hello world
通常可以写在sql脚本里面

cat test.sql
\echo ==========
select * from t
\echo ==========

列出当前数据库连接的信息
\conninfo 

查看数据库中安装的扩展
\dx
或
select * from pg_extension;

获得快捷命令实际执行的SQL
连接数据库的时候使用-E参数即可

psql -E postgres
这样连接上数据库之后执行"\d"这些命令都会打印出实际的SQL语句

查看数据库、表、索引大小
select pg_size_pretty(pg_database_size('DB_NAME'));

select pg_size_pretty(pg_table_size('TABLE_NAME'));

select pg_size_pretty(pg_indexes_size('INDEX_NAME'));
psql命令使用
命令	说明
\h	help \h create table
\d tb_name	查看表(视图,索引,序列)结构
\du	查看用户列表
\dt	查询数据库所有表(非系统表)
\dS	列出系统表和索引
\di index_name	只查看指定索引
\df	列出函数
\dv	只显示视图
\ds	只显示序列
\dn	列出所有的schema
\db	显示所有的表空间
\dg	列出数据库的所有角色或用户
\dp或者\z	查看表的分配权限
\c [user_name] [db_name]	切换某用户到指定数据库
\timing on/off	显示执行sql的时间
\encoding encode_type	设置客户端编码
\pset [option [value] ]	输出格式设置
\l	显示所有数据库列表
\q	退出
\o filename	文本输出执行结果
\I filename	用于执行存储在外部文件的sql语句或命令
\x	数据按列展示,类似mysql的\G
自动补全:连续单击两次tab键

+:对比显示更加详细的信息,例如:\du+  \dt+ \d+
?/* :查询匹配通配符,例如:\d tb?
pgsql -E :可以显示命令执行的对应的SQL语句

\pset边框设置
\pset boder 0 :不带任何边框
\pset boder 1 :输出内容有边框
\pset boder 2 :带边框

\pset设置文本输出格式
\pset format unaligned (默认分隔符|)
\pset filesep '分隔符' (例如:\t)

PS:本文转自互联网

相关文章:

  • 在后台把DataTable组织成JSON,送到前台动态填充UltraWebGrid
  • Win10以后的版本不支持文件拖动打开的解决办法
  • 阴阳历转换
  • EmEditor正则匹配中文
  • VC阴阳历转化与二十四节气
  • EmEditor 正则表达式语法
  • 星期、干支、二十八宿计算公式
  • Tmux使用教程
  • 悄悄地我走了 著名的非自然死亡
  • 【ROS-Navigation】Movebase主体源码解读
  • 【ROS-Navigation】NavFn全局规划源码解读-1
  • 【ROS-Navigation】NavFn全局规划源码解读-2
  • 【ROS-Navigation】Base Local Planner局部规划-TrajectoryPlanner源码解读-1
  • SQLServer获取Excel中所有Sheet
  • 【ROS-Navigation】Base Local Planner局部规划-TrajectoryPlanner源码解读-2
  • php的引用
  • .pyc 想到的一些问题
  • Computed property XXX was assigned to but it has no setter
  • Docker: 容器互访的三种方式
  • ES2017异步函数现已正式可用
  • extract-text-webpack-plugin用法
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • MobX
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • Unix命令
  • Vue实战(四)登录/注册页的实现
  • 利用jquery编写加法运算验证码
  • 前端工程化(Gulp、Webpack)-webpack
  • 使用docker-compose进行多节点部署
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 微信小程序设置上一页数据
  • 微信小程序实战练习(仿五洲到家微信版)
  • 译自由幺半群
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • $.ajax,axios,fetch三种ajax请求的区别
  • $L^p$ 调和函数恒为零
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (done) 两个矩阵 “相似” 是什么意思?
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (转)可以带来幸福的一本书
  • (转载)Linux网络编程入门
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .net core使用ef 6
  • .net 提取注释生成API文档 帮助文档
  • .NET6 命令行启动及发布单个Exe文件
  • .NET关于 跳过SSL中遇到的问题
  • .NET文档生成工具ADB使用图文教程
  • .NET与 java通用的3DES加密解密方法
  • .NET中的Exception处理(C#)
  • @angular/cli项目构建--Dynamic.Form
  • @Valid和@NotNull字段校验使用
  • [ Linux Audio 篇 ] 音频开发入门基础知识
  • [ 蓝桥杯Web真题 ]-Markdown 文档解析