老黄历数据库压缩版

来源:互联网 发布:啄木鸟软件 编辑:程序博客网 时间:2024/05/15 23:47

上午看需求文档,经理要给日历添加黄历功能。黄历是个什么东西?洒家一时懵懂,不懂也无妨,且去问问度娘。吐槽度娘的人不少,可真没了她,还真不行。一时三刻,搜到不少黄历数据库。当下来打开一看,嗬,两百年,10多M。这APP怎么受得了?必须得减肥呀!
先削年份,1970-2036就足够了。用洒家三脚猫的SQL技能,两个delete完事,一个delete还搞不定,到底是三脚猫嘛。10M变成了4M,不行呀,还得继续减,减出骨感美来!从哪里下手呢?分析发现,这个老黄历,也没多少东西,除了宜就是忌。可是里面的条目有问题,太多了,有减的余地。人家小米日历里面最多只有5条,例如:宜嫁娶、理发、开市、出行、动土。咱们也东施效颦,5条万岁。手动修改想也不用想,程序处理,必须的!

上代码:

    /**     * 截取 最长保留5条     * 2015-11-6 下午4:28:22     */    private String max5(String txt){        if(TextUtils.isEmpty(txt)) return txt;        String[] txt_arr = txt.split("、");        if(txt_arr.length >5){            StringBuffer sb = new StringBuffer();            sb.append(txt_arr[0]).append("、");            sb.append(txt_arr[1]).append("、");            sb.append(txt_arr[2]).append("、");            sb.append(txt_arr[3]).append("、");            sb.append(txt_arr[4]);            txt = sb.toString();        }        return txt;    }
    /**        @Todo 数据压缩方法,先读取,再修改,最后更新,往下循环    */    private void convertDB() {        DBDao dao = new DBDao(this);        AlmanacInfo info;        for(int i=49674;i>=25203;i--){            info = dao.find(i);            if(info == null) break;            String good = info.getGood();            String bad = info.getBad();            info.setGood(max5(good));            info.setBad(max5(bad));            dao.update(info);            Log.i("wyz", "----->"+info.getId());            info = null;        }    }

DBDao是数据库操作类,AlmanacInfo是对黄历数据的封装类。执行效率不高,两万多条数据,半小时才处理一半。不知为什么,转换以后数据库大小不减反增,导出sql文件,然后导入重新生成db以后,大小这才发生变化。
不喜可喷,谁有更好的方法,还请不吝赐教。

附数据库下载地址

1901-2100 黄历数据库
1970-2036 黄历数据库

0 0
原创粉丝点击