设为首页 收藏本站
查看: 1185|回复: 0

[经验分享] postgresql 中常用小语法2

[复制链接]

尚未签到

发表于 2016-11-20 09:37:39 | 显示全部楼层 |阅读模式
  1. PG 中测试可能需要循环插入N多数据 这时候写function等就比较麻烦 我们可以用 generate_series 来
  example:
  mrapp=# create table test_series(id int) ;
CREATE TABLE
mrapp=# insert into test_series(id) select generate_series(1,100000);
INSERT 0 100000
mrapp=# select count(1) from test_series;
 count
--------
 100000
(1 行记录)
  2. postgresql 中比较两个字符串中重叠的数量
  我们先将array转换为行数据 然后和另一个转换过的array进行去重 然后再拼为数组即可
  example:
  
mrapp=# select unnest(array[1,2,4]);
 unnest
--------
      1
      2
      4
(3 行记录)
  
mrapp=# select unnest(array[1,2,4]) intersect select unnest(array[2,3,4]);
 unnest
--------
      2
      4
(2 行记录)
  
mrapp=# select array(select unnest(array[1,2,4]) intersect select unnest(array[2
,3,4]));
 array
-------
 {2,4}
(1 行记录)
  3. postgresql 列转数组
  可以用array_agg 函数来处理
  example :
  
mrapp=# select 1 as a union select 2 as a union select 3 as a;
 a
---
 1
 2
 3
(3 行记录)
  
mrapp=# select array_agg(t.a) from (select 1 as a union select 2 as a union sele
ct 3 as a) as t;
 array_agg
-----------
 {1,2,3}
(1 行记录)
  3. PG中有时候会碰到一个父表下面带了一堆的字表或者关联表,要删除的话 需要一个一个先将字表或关系先删除掉,可以在删除的时候加上关键字: cascade 可以将和当前关联的东西一起删除掉
  drop table XX cascade ;
  drop server XX cascade;
  drop extension XX cascade;
 4、统计一个库中的所有表的行数和表大小 
 SELECT CASE
           WHEN t.row_total = t.row_seq THEN
            REPLACE(sql_content, ' union all ', ') a order by 2 desc;')
           WHEN t.row_seq = 1 THEN
            'select * from(' || sql_content
           ELSE
            sql_content
       END sql_content
  FROM (SELECT COUNT(*) over() row_total,
               row_number() over() row_seq,
               'SELECT ''' || tablename ||
               ''' 表名, count(*) 表行数,pg_size_pretty(pg_total_relation_size(''' ||
               tablename || '''::regclass)) 表总大小 from ' || tablename ||
               ' union all ' sql_content
          FROM pg_tables
         WHERE schemaname = 'public') t
 ORDER BY t.row_seq;

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-302755-1-1.html 上篇帖子: no-installer postgreSQL完全手动安装 下篇帖子: 关于Kettle更新Greenplum&Postgresql出错问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表