老黄历数据库压缩版
2015-11-06 17:28
169 查看
上午看需求文档,经理要给日历添加黄历功能。黄历是个什么东西?洒家一时懵懂,不懂也无妨,且去问问度娘。吐槽度娘的人不少,可真没了她,还真不行。一时三刻,搜到不少黄历数据库。当下来打开一看,嗬,两百年,10多M。这APP怎么受得了?必须得减肥呀!
先削年份,1970-2036就足够了。用洒家三脚猫的SQL技能,两个delete完事,一个delete还搞不定,到底是三脚猫嘛。10M变成了4M,不行呀,还得继续减,减出骨感美来!从哪里下手呢?分析发现,这个老黄历,也没多少东西,除了宜就是忌。可是里面的条目有问题,太多了,有减的余地。人家小米日历里面最多只有5条,例如:宜嫁娶、理发、开市、出行、动土。咱们也东施效颦,5条万岁。手动修改想也不用想,程序处理,必须的!
上代码:
DBDao是数据库操作类,AlmanacInfo是对黄历数据的封装类。执行效率不高,两万多条数据,半小时才处理一半。不知为什么,转换以后数据库大小不减反增,导出sql文件,然后导入重新生成db以后,大小这才发生变化。
不喜可喷,谁有更好的方法,还请不吝赐教。
附数据库下载地址
1901-2100 黄历数据库
1970-2036 黄历数据库
先削年份,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 黄历数据库
相关文章推荐
- mysql中的定时器及存储过程
- mysql
- oracle rowid 使用
- SQL Server 索引
- 使用CAS登录模块连接数据库验证用户合法性
- SQL多表连接查询
- crontab定时备份mysql不执行
- 源码安装MySQL
- PostgreSQL(EXCEPT,INTERSECT)
- SQL Server遍历表的几种方法 转载
- 使用MyBatis对表执行增删改查操作——基于注解的实现
- Sql数据库的Web管理系统源码
- 三、安装配置多实例MYSQL5.6-多独立配置文件方法
- CentOS6.6安装Oracle 11.2g
- MySQL存储过程中declare和set定义变量的区别
- Redis
- PostgreSQL备份和恢复数据表
- 更改MySQL数据库的编码为utf8mb4
- 解决sqljdbc 连接 sqlserver 2008时在getConnection后停住的问题
- SQL基础--合并查询(union,union all,intersect,minus)用法与介绍