侧边栏壁纸
博主头像
zyixin

当你觉得为时已晚的时候,恰恰是最早的时候

  • 累计撰写 66 篇文章
  • 累计创建 0 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

PGSQL常用命令

zyixin
2024-07-10 / 0 评论 / 0 点赞 / 1,847 阅读 / 1,166 字
温馨提示:
本文最后更新于 2024-12-27,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

1. 登录pg数据库

psql -h host -p port -U username -d database 

host:数据库主机名或 IP 地址。
port:数据库端口号(默认为 5432)。
username:连接数据库所使用的用户名。
database:数据库名称。

2. 查看当前有什么数据库

使用 \l 查看数据库

[postgres@centos7 pgdata]$ psql
psql (15.1)
Type "help" for help.
 
postgres=# \l
                                                List of databases
   Name    |  Owner   | Encoding |  Collate   |   Ctype    | ICU Locale | Locale Provider |   Access privileges   
-----------+----------+----------+------------+------------+------------+-----------------+-----------------------
 postgres  | postgres | UTF8     | en_US.utf8 | en_US.utf8 |            | libc            | 
 template0 | postgres | UTF8     | en_US.utf8 | en_US.utf8 |            | libc            | =c/postgres          +
           |          |          |            |            |            |                 | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.utf8 | en_US.utf8 |            | libc            | =c/postgres          +
           |          |          |            |            |            |                 | postgres=CTc/postgres
(3 rows)

3. 切换数据库

\c 切换数据库

postgres=# \c postgres
You are now connected to database "postgres" as user "postgres".

4. 切换scheam

SET search_path TO my_schema;

5. 展示详细信息

\d 可以展示每个匹配关系的详细信息,例如(表、视图、索引、序列)等

  1. 如果\d命令什么都不带,将列出数据库中的所有表
  2. \d后面跟表名,显示这个表的结构定义
  3. \d后面跟索引名,显示索引的信息
  4. 跟通配符模糊匹配表名
    ,例如“*”或“?”,
  5. \d+,将显示比\d更详细的命令
    包括:任何与表列关联的注释,以及表中出现的OID

6. 显示SQL已执行的时间

\timing on

db_test=# \timing on
Timing is on.
db_test=# select count(*) from dongsc.t1;
 count 
-------
     0
(1 row)
 
Time: 0.296 ms

7. 列出当前数据库下所有schema

\dn

8. 显示所有的表空间

\db

9. 列出数据库中所有的角色或用户

\dg或du
\du和\dg命令等价,因为pg中用户和角色不区分

10. 显示表的权限分配情况

\dp 或\z

db_test=# \z t1 
                            Access privileges
 Schema | Name | Type  | Access privileges | Column privileges | Policies 
--------+------+-------+-------------------+-------------------+----------
 public | t1   | table |                   |                   | 
(1 row)

11. 指定psql显示的字符集

就像oracle中的sqlplus依赖于NLS_LANG一样,psql也能够指定字符集,并且能够实时更改

postgres=# \encoding 
UTF8
postgres=# \encoding gbk
postgres=# \encoding 
GBK

12. 执行在外部文件中的SQL语句或命令

1、使用\i在psql内部执行

db_test=# \i test_dml.txt 
 id |  name   |  addr  
----+---------+--------
  1 | dongsc  | jinan
  2 | dongsc2 | jinan2
(2 rows)

2、使用-x在shell命令行中执行

[postgres@centos7 scripts]$ psql -d db_test -f test_dml.txt 
 id |  name   |  addr  
----+---------+--------
  1 | dongsc  | jinan
  2 | dongsc2 | jinan2
(2 rows)

13. 设置输出显示格式

\x

相当于mysql的\G

14. 导出数据库

pg_dump 是 PostgreSQL 自带的备份工具,可以用于导出数据库和表的数据和结构。

pg_dump -h host -p port -U username -d database -f database.sql

host:数据库主机名或 IP 地址。
port:数据库端口号(默认为 5432)。
username:连接数据库所使用的用户名。
database:要导出的数据库名称。
database.sql:导出的 SQL 脚本文件。
–inserts:将数据转储为INSERT命令,而不是COPY

如果只想导出数据库的结构而不包含数据,可以使用以下命令:

pg_dump -h host -p port -U username -d database -s -f database.sql

-s 参数表示只导出数据库的结构而不包括数据。

如果只想导出数据库的数据而不包含结构,可以使用以下命令:

pg_dump -h host -p port -U username -d database -a -f database.sql

-a 参数表示只导出数据而不导出表结构。

15. 导出表

pg_dump -h host -p port -U username -d database -t table_name -f table_name.sql

host:数据库主机名或 IP 地址。
port:数据库端口号(默认为 5432)。
username:连接数据库所使用的用户名。
database:要导出的数据库名称。
table_name:要导出的表名。
table_name.sql:导出的 SQL 脚本文件。

如果只想导出表的数据而不导出表结构,可以使用以下命令:

pg_dump -h host -p port -U username -d database -t table_name -a -f table_name.sql

-a 参数表示只导出数据而不导出表结构。

如果只想导出表的结构而不导出表数据,可以使用以下命令:

pg_dump -h host -p port -U username -d database -t table_name -s -f table_name.sql

-s 参数表示只导出结构而不包括数据。

如果想同时导出多张表,用多个-t 表名即可。

pg_dump -h host -p port -U username -d database -t table_a_name -t table_b_name -s -f table_name.sql

16. 将查询结果导出csv文件

copy (select * from test where create_time >= '2024-01-01') to '/tmp/data/test.csv' with csv header;
0

评论区