postgresql大表分批次删除

复制代码
[root@localhost ~]# cat  /root/delete_big_table.sh 
#!/bin/bash
#$1对应表名,$2对应主键列,$3对应一次删除多少行


i=`psql -h 127.0.0.1 -U postgres -d tenant_1011046 -c "select ceil(count(1)/${3}::float) from ${1} where  platcreatetime < '2023-04-30 23:59:59'"`
n=`echo ${i} |awk -F ' ' '{print $3}'`
c=1
#echo ${n}
#echo `echo ${i} |awk -F ' ' '{print "一共需要执行",$3,"次"}'`
while [ $c -le $n ]
do
        echo `date`
        echo '一共需要执行'${n}'次,当前执行第'${c}''
        echo '一共需要执行'${n}'次,当前执行第'${c}'' > /home/jindu.txt
        returns=`psql -h 127.0.0.1 -U postgres -d tenant_1011046 -c "delete from ${1} where ${2} =any (select ${2} from ${1} where  platcreatetime < '2023-04-30 23:59:59' limit ${3} );"`
        echo `date`
        c=$[ $c+1 ]
done

[root@localhost ~]# sh /root/delete_big_table.sh gt_interface_logs id 4000000
2023年 07月 04日 星期二 22:44:07 CST
一共需要执行8次,当前执行第1次
复制代码

 

vacuumn full table_name 

posted @   littlevigra  阅读(217)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
历史上的今天:
2020-07-04 mysql5.7.1.log数据库改名
2018-07-04 http协议中的keeplive是做什么的?它的适应场景是什么?
点击右上角即可分享
微信分享提示