PostgreSQL知识点汇总

1. 连接数据库

#连接数据库
psql -h hostname -p portnumber -U username -d databasename

psql -h  127.0.0.1  -p 5432  -U cloud_test   -d  cloud

成功连接并进入 psql交互界面后,以下是一些非常实用的元命令(以反斜杠 `\`开头):
\l或 \list:列出所有可用的数据库
\c <database_name>:切换到另一个数据库,例如 \c mydb
\dt:列出当前数据库中的所有表
\d <table_name>:显示指定表的结构(字段名、类型等)
\q:退出 psql命令行工具


pg_dump --file "/root/pgsql-all20250701.backup" --host "127.0.0.1" --port "5432" --username "lmzf_pg_test" --dbname "cloud" --verbose --format=c --blobs --encoding "UTF8"


#创建数据库
createdb -h 127.0.0.1 -p 5432  -U postgres cloud

createdb -h 127.0.0.1 -p 5432 -U postgres database_name -E UTF8 --lc-collate=C --lc-ctype=C

createdb -h 127.0.0.1 -p 5432 -U postgres   cloud    -T template0 -E UTF8  --lc-collate=C  --lc-ctype=C


#导入数据库
pg_restore  --host "10.10.14.133" --port "5432" --username "postgres"   --dbname "cloud"  --verbose  /root/pgsql-all20250701.backup

2. 查询数据库

2.1  查看单个数据库大小(以易读格式显示)

SELECT pg_size_pretty(pg_database_size('数据库名'));

2.2 查看所有数据库大小(列表形式)

SELECT 
    datname AS "数据库名",
    pg_size_pretty(pg_database_size(datname)) AS "大小"
FROM pg_database;

2.3. 查看所有数据库总大小

SELECT pg_size_pretty(SUM(pg_database_size(datname))) AS "总空间"
FROM pg_database;

3. 查询表

3.1 查询当前库所有模式下所有表的数据大小,索引大小,表大小,并按表大小倒序排列

SELECT
    table_name,
    pg_size_pretty(table_size) AS table_size,
    pg_size_pretty(indexes_size) AS indexes_size,
    pg_size_pretty(total_size) AS total_size
FROM (
    SELECT
        table_name,
        pg_table_size(table_name) AS table_size,
        pg_indexes_size(table_name) AS indexes_size,
        pg_total_relation_size(table_name) AS total_size
    FROM (
        SELECT ('"' || table_schema || '"."' || table_name || '"') AS table_name
        FROM information_schema.tables
    ) AS all_tables
    ORDER BY total_size DESC
) AS pretty_sizes;

 3.2 统计当前数据库指定模式所有表的大小

public根据实际情况修改

SELECT table_schema || '.' || table_name AS full_table_name,
          pg_size_pretty(pg_total_relation_size('"' || table_schema || '"."' || table_name || '"')) AS total_size
   FROM information_schema.tables
   WHERE table_schema = 'public' -- 可修改为其他模式
   ORDER BY pg_total_relation_size('"' || table_schema || '"."' || table_name || '"') DESC;

 

 3.3 当前模式中所有表的大小、表相关对象的大小以及总表大小

SELECT stats.relname
           AS table,
       pg_size_pretty(pg_relation_size(statsio.relid))
           AS table_size,
       pg_size_pretty(pg_total_relation_size(statsio.relid) 
           - pg_relation_size(statsio.relid))
           AS related_objects_size,
       pg_size_pretty(pg_total_relation_size(statsio.relid))
           AS total_table_size,
       stats.n_live_tup
           AS live_rows
  FROM pg_catalog.pg_statio_user_tables AS statsio
  JOIN pg_stat_user_tables AS stats
 USING (relname)
 WHERE stats.schemaname = current_schema  -- Replace with any schema name
 UNION ALL
SELECT 'TOTAL'
           AS table,
       pg_size_pretty(sum(pg_relation_size(statsio.relid)))
           AS table_size,
       pg_size_pretty(sum(pg_total_relation_size(statsio.relid) 
           - pg_relation_size(statsio.relid)))
           AS related_objects_size,
       pg_size_pretty(sum(pg_total_relation_size(statsio.relid)))
           AS total_table_size,
       sum(stats.n_live_tup)
           AS live_rows
  FROM pg_catalog.pg_statio_user_tables AS statsio
  JOIN pg_stat_user_tables AS stats
 USING (relname)
 WHERE stats.schemaname = current_schema  -- Replace with any schema name
 ORDER BY live_rows ASC;

 

4. SQL格式备份与恢复

#pg_dump备份
#pg_dump支持多种输出格式,通过 -F参数指定,纯文本格式 (-F p)
#语法格式
pg_dump -h ${DB_HOST} -p ${DB_PORT} -U ${DB_USER} -d ${TARGET_DB_NAME}  -Fp 
-f  ${BACKUP_FILE}
pg_dump  -h  10.10.10.180   -p 32371  -U  postgres    -d   lmzf_db  -Fp  -f  lmzf_cloud_202511232052.sql
#psql恢复
#纯文本格式的恢复:如果您当时使用的是纯文本格式(-Fp或默认)备份,生成的是 .sql文件,则应使用 psql工具进行恢复
#语法格式
psql -h ${DB_HOST} -p ${DB_PORT} -U ${DB_USER} -d ${TARGET_DB_NAME} -f ${BACKUP_FILE}

5. 参考文献

POSTGRESQL 数据库导入导出 - cchilei - 博客园

Postgresql相关数据库、表占用磁盘大小统计(查看表数据占用空间及表数据+索引占用空间大小)_pg数据库表空间占用情况-优快云博客

如何获取 PostgreSQL 数据库中的表大小、数据库大小、索引大小、模式大小、表空间大小、列大小 - wongchaofan - 博客园

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值