当table1的数据超过20万条的时候
决定删除table1和table2 2个表
因为这2个表有关联删除的条件就是
每次保留15万条
删掉多余的数据我不知道怎么写语句按照条件删除
我的存储过程语句是按照年份删的下面是别人给我的思路,但(4)语句有错误
1 准确的来说 是通过shell调用某个存储过程来删除数据
2 那么问题就迎刃而解了 先做存储过程p_deletehisdate
3 这个存储过程实现删除的功能。
(1)先判断talbe1是否超过了20W count(*)>200000
(2) 超过了进行删除,删除条数为50000,删除否则什么都不做
(3) 难点在于如何准确定位50000。
(4) select 生成时间 from (select *,rownum rn from (select * from table1 order by 生成时间 )) where rn=50000;
(5) 那么这个得到的生成时间 就是你delete from table1 where 生成时间=... 的条件了
4 通过shell调用这个存储过程
决定删除table1和table2 2个表
因为这2个表有关联删除的条件就是
每次保留15万条
删掉多余的数据我不知道怎么写语句按照条件删除
我的存储过程语句是按照年份删的下面是别人给我的思路,但(4)语句有错误
1 准确的来说 是通过shell调用某个存储过程来删除数据
2 那么问题就迎刃而解了 先做存储过程p_deletehisdate
3 这个存储过程实现删除的功能。
(1)先判断talbe1是否超过了20W count(*)>200000
(2) 超过了进行删除,删除条数为50000,删除否则什么都不做
(3) 难点在于如何准确定位50000。
(4) select 生成时间 from (select *,rownum rn from (select * from table1 order by 生成时间 )) where rn=50000;
(5) 那么这个得到的生成时间 就是你delete from table1 where 生成时间=... 的条件了
4 通过shell调用这个存储过程
以下为proc.sh文件内容:
sqlplus user/password <<!
exec proc_name;
exit
!
其中proc_name是存储过程的名字
user/password是存储过程所在用户的用户名和密码