COPY (SELECT a.corp_name,a.area_code,a.entity_code,b.addr_type,b.addr_content,b.symbol_code,b.geo_addr FROM geo_entity_info as a left join geo_space_info as b on a.corp_id=b.corp_id) TO '/mnt/d/a.csv' WITH csv HEADER;
select relname, pg_size_pretty(pg_relation_size(relid)) from pg_stat_user_tables where schemaname='public'orderby pg_relation_size(relid) desc
查看全部表索引大小
1
select indexrelname, pg_size_pretty(pg_relation_size(relid)) from pg_stat_user_indexes where schemaname='public'orderby pg_relation_size(relid) desc
查看数据库连接情况
1
select * from pg_stat_activity
结束数据库连接
1
SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname='njqwebdb'AND pid<>pg_backend_pid()
查询数据库中的表
1
select * from pg_tables WHERE schemaname='public'
语句耗时统计
1
select * FROM pg_stat_statements ORDERBY total_time DESC
索引缓存命中率
1 2 3 4 5 6
SELECT sum(idx_blks_read) as idx_read, sum(idx_blks_hit) as idx_hit, (sum(idx_blks_hit) - sum(idx_blks_read)) / sum(idx_blks_hit) as ratio FROM pg_statio_user_indexes;
-s 代表指定数据的SRID为3857 -c 代表数据将新建一个表 -d 删除旧的表,重新建表并插入数据 -a 向现有表中追加数据 -p 仅创建表结构,不添加数据,这四个参数是互斥的 -W Shape文件中属性的字符集,通常Postgresql的字符集是UTF-8,有时候可能Shape数据中的字符集是其他,就可能报“Unable to convert data value to UTF-8 (iconv reports “无效或不完整的多字节字符或宽字符”). Current encoding is “UTF-8”. Try “LATIN1” (Western European)”错误,这时候指定正确的字符集即可解决方问题。
常用查询
跨表查询统计
1 2 3 4 5 6
SELECT xcz_item.code,xcz_region."name","type","count"(xcz_item.code) AScount FROM xcz_item LEFTJOIN xcz_region ON xcz_item.code LIKE'330604%'AND xcz_item.code=xcz_region.code GROUPBY xcz_item.code,"type",xcz_region."name" ORDERBY xcz_item.code ,"type"
跨表条件统计
1 2 3 4 5 6 7 8 9 10
SELECTDISTINCT a.code,a.name, COALESCE(count(b.*),0) AS total, sum(CASEWHEN b.state = 4THEN1ELSE0END) AS finished, sum(CASEWHEN b.state <>4OR b.state ISNULLTHEN1ELSE0END) AS unfinished, st_astext(st_centroid(a.geom)) ASposition FROM xcz_region a leftjoin xcz_item b ON a.code=b.code WHERE a.need=1AND b.type='1001' GROUPBY a.code,a.name,a.geom ORDERBY a.code
图形操作
空间查询
1 2
SELECTcount(*) FROM njq_dk WHERE st_intersects(geom,st_geomfromtext('MULTIPOLYGON(((120.92 29.37,120.93 29.37,120.93 29.38,120.92 29.37,120.92 29.37)))',4326)) SELECTcount(*) FROM njq_dk WHERE st_intersects(geom,st_geomfromtext('POLYGON((120.92 29.37,120.93 29.37,120.93 29.38,120.92 29.37,120.92 29.37))',4326))
创建空间索引
1 2 3 4
create extension pg_trgm; update pg_opclass set opcdefault = truewhere opcname='gin_trgm_ops'; CREATEindexon njq_dk USING gist (geom); CREATEindexon njq_dk USING gin (geom gin_trgm_ops);
外包多边形
1
select ST_AsText(ST_ConvexHull(ST_Collect(geom))) FROM xcz_region
外包矩形
1
select ST_AsText(st_Envelope(ST_Collect(geom))) FROM xcz_region
中心点(面质心)
1
select st_astext(st_centroid(geom)) FROM xcz_region
面上点(和面lable位置一致)
1
select st_astext(st_PointOnSurface(geom)) FROM xcz_region