免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2870 | 回复: 9
打印 上一主题 下一主题

求 sybase中删除前5个月的数据的语句!!本人很菜,查了好多资料也没有头绪,求助!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-02-13 09:49 |只看该作者 |倒序浏览
delete table tablename where TimePoint < dataadd(day,-10,getdate())  这个是删除前十天的数据,格式对不对??前5个月应该怎么写呢??


这样写对不对呢?
delete table tablename where TimePoint < month(dateadd(month, -5, getdate()))

谢谢大家了!!

[ 本帖最后由 baiducc2000 于 2009-2-13 09:52 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-02-13 10:02 |只看该作者
dateadd(mm, -5, getdate())

论坛徽章:
0
3 [报告]
发表于 2009-02-13 10:25 |只看该作者
delete table tablename where TimePoint < month(dateadd(mm, -5, getdate()))

是这样的吗??

论坛徽章:
33
ChinaUnix元老
日期:2018-07-04 15:10:362015年亚洲杯之阿联酋
日期:2015-02-06 17:15:532015亚冠之武里南联
日期:2015-06-06 15:40:252015亚冠之北京国安
日期:2015-06-17 15:42:412022北京冬奥会纪念版徽章
日期:2015-08-10 16:30:322015亚冠之阿尔纳斯尔
日期:2015-09-20 09:42:1215-16赛季CBA联赛之北京
日期:2016-01-15 10:03:5915-16赛季CBA联赛之青岛
日期:2016-04-26 16:44:4915-16赛季CBA联赛之广夏
日期:2018-07-04 15:33:21C
日期:2016-10-25 16:12:142017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之同曦
日期:2017-02-22 22:41:10
4 [报告]
发表于 2009-02-13 10:26 |只看该作者
把表结构贴出来帮你写,呵呵

论坛徽章:
0
5 [报告]
发表于 2009-02-13 15:18 |只看该作者
你最好把表结构贴出来,别整的删错了

论坛徽章:
0
6 [报告]
发表于 2009-02-15 15:22 |只看该作者
Columns for Table RPT_TR

Field Name                        Type
TIME_STAMP                      Date_Time
RECORD_SOURCE              Number
SUBSCRIBER_ID                 String
PACKAGE_ID                      Number
SERVICE_ID                       Number
PROTOCOL_ID                   Number
SAMPLE_SIZE                    Number
PEER_IP                            Number
PEER_PORT                       Number

论坛徽章:
0
7 [报告]
发表于 2009-02-15 15:28 |只看该作者
sybase是一个软件的数据库,软件本身有个清理过期数据的脚本:
如:清理RPT_TR表中100天前的数据:
delete from RPT_TR where TIME_STAMP < dateadd(dd, -100, getdate())

但是这个语句运行时,就会因为log日志溢出导致清理失败。有没有办法让delete不写日志?

不知道应该怎么处理。

现在先用truncate table RPT_TR将整个表清理了 !!

请教各位老大了!!

论坛徽章:
1
2017金鸡报晓
日期:2017-01-10 15:19:56
8 [报告]
发表于 2009-02-16 08:36 |只看该作者
但是这个语句运行时,就会因为log日志溢出导致清理失败。
这个说明被删除的数据过多,导致log空间满,
可以考虑的办法 一是减少每次删除的数据量,你的要求是删除5个月前的,可以考虑按月删除记录,关键是需要计算一下删除的记录行数以及大概的空间,确认log空间够用。
另外一个方法是将需要留下的数据导入另外一个表备份,然后将原表删除后,将备份的改名,并建立索引的对象。这个方法使用于删除的数据量比保留的数据大很多的情况

论坛徽章:
0
9 [报告]
发表于 2009-02-17 17:04 |只看该作者

回复 #7 baiducc2000 的帖子

delete一定会写日志,多加些日志空间就解决了。
也可以用游标循环删除,例如循环10000次,commit一次,这样不会日志就可以不断truncate。

论坛徽章:
0
10 [报告]
发表于 2009-02-19 13:28 |只看该作者
使用while循环,例如每个循环delete 10000条,然后commit.很快就完成了。处理的纪录超过10000以上千万别使用cursor,很慢,用while循环结构快很多。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP