老黄历数据库压缩版

上午看需求文档,经理要给日历添加黄历功能。黄历是个什么东西?洒家一时懵懂,不懂也无妨,且去问问度娘。吐槽度娘的人不少,可真没了她,还真不行。一时三刻,搜到不少黄历数据库。当下来打开一看,嗬,两百年,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 黄历数据库

你可能感兴趣的:(工作笔记)