Common SQL¶
1. DB maintain¶
1.1 DB maintain¶
1. Export/Import¶
- Table export/import
1.2 Table maintain¶
truncate单个表
truncateschema下所有表
查询schema下所有表,并生成
truncateSQL
select 'truncate table '|| string_agg(schemaname || '.' || relname,' ,')||';' from pg_stat_user_tables where schemaname='fa131';
复制并执行生成的如下
truncateSQL,快速清理schema下所有表数据,但会保留表架构
drop外部表
查询schema下所有外部表,并生成
dropSQL
-- PostgreSQL 13
SELECT 'drop foreign table ' || quote_ident(n.nspname) || '.' || quote_ident(c.relname) || ' cascade;'
FROM pg_foreign_table ft
JOIN pg_class c ON ft.ftrelid = c.oid
JOIN pg_namespace n ON c.relnamespace = n.oid
WHERE n.nspname = 'fa131';
-- PostgreSQL 16
SELECT 'drop foreign table ' || schemaname || '.' || tablename || ' cascade;'
FROM pg_foreign_table
JOIN information_schema.tables
ON pg_foreign_table.ftrelid = ('"' || tables.table_schema || '"."' || tables.table_name || '"')::regclass
WHERE table_schema = 'fa131';
复制并执行生成的如下
dropSQL,批量drop schema下所有外部表
1.3 Schema maintain¶
2. Others¶
1. 常用查询¶
- 查询DB下所有表大小(按从大到小排序)
SELECT
schemaname AS schema_name,
relname AS table_name,
pg_size_pretty(pg_total_relation_size(relid)) AS total_size,
pg_size_pretty(pg_relation_size(relid)) AS table_size,
pg_size_pretty(pg_total_relation_size(relid) - pg_relation_size(relid)) AS index_size
FROM pg_catalog.pg_statio_user_tables
WHERE schemaname NOT IN ('pg_catalog', 'information_schema')
ORDER BY pg_total_relation_size(relid) DESC;