203、PostgreSQL之psql使用
程序员文章站
2022-03-15 18:58:56
...
前言:
psql是PostgreSQL自带的命令行客户端工具,具有非常丰富的功能, 类似于Oracle的sqlplus,MySQL的mysql,MongoDB的MongoDB等等命令行交互界面,对于DBA来说,熟悉psql是非常有必要也是很有帮助的。
1.连接数据库实例:
psql -h 127.0.0.1 -U root -d postgres
参数说明
在psql使用时,总是有一些参数需要你注意一下,否则可能懵逼半天
- -A 设置非对齐输出模式
- -t,只显示数据,不显示字段名称和返回的结果集行数
- -c, 调用SQL语句命令
- -f, 调用sql脚本文件
2.如何创建一个新库mydb
创建表空间目录(在shell界面下)$ mkdir -p /data/johnny/pgdata/12/data/pg_tblspc/mydb_tbs
创建一个新用户(psql界面)postgres=# create user pguser with encrypted password 'admin123';
创建表空间postgres=# create tablespace mydb_tbs owner pguser LOCATION '/data/johnny/pgdata/12/data/pg_tblspc/mydb_tbs';
创建数据库postgres=# create database mydb with owner=pguser template=template0 tablespace=mydb_tbs;
赋权
postgres=# grant all on database mydb to pguser with grant option; --
postgres=# grant all on tablespace mydb_tbs to pguser;
3.外部调用sql语句
$ psql -h 10.67.37.45 -U root -d mydb -c 'select * from test_1 where id=1'
id | name
----+--------
1 | 1_kobe
(1 row)
批量执行sql命令(即调用sql脚本文件)$ psql -h 10.67.37.45 -U root -d mydb -f test_q.sql
4.在psql中如何显示SQL语句的执行时间:
mydb=# \timing --timing命令是你不二的选择
Timing is on.
mydb=# select count(*) from test_1;
count
--------
100000
(1 row)
Time: 8.100 ms
5.反复执行当前SQL命令
mydb=# select now();
now
-----------------------------
2020-05-06 15:03:10.8976+08
(1 row)
Time: 0.462 ms
mydb=# \watch 1 --watch命令就会每隔1秒钟执行一次select now()命令;
Wed 06 May 2020 03:03:14 PM CST (every 1s)
now
------------------------------
2020-05-06 15:03:14.87073+08
(1 row)
Time: 0.282 ms
Wed 06 May 2020 03:03:15 PM CST (every 1s)
now
-------------------------------
2020-05-06 15:03:15.872128+08
(1 row)
6.变更psql提示符
mydb=# \set PROMPT1 '%/%R%#' --具体提示符都有哪些含义,可以自己查查
mydb=#\echo :PROMPT1
%/%R%#