SQLite Expert表分离和解决SQLite Expert删除表后大小不变的问题
最后要使用到号码归属地的查询,在网上找到一个数据库文件。大小有12M多,压缩成zip也有1.9M,这样对于一个apk的大小非常不利,后来看了一下数据库的内容,发现有非常多冗余。特别是中文字符占用非常大的空间,在网上找了一种方法把一个表进行分离。分成两个表,两个表之间能够使用外键的形式进行关联。这里用到的几个表名:tb_city、mob_location、tb_mobile,终于是要把表mob_location分离成tb_city、tb_mobile在SQLite Expert上能够使用sql语句,这里仅仅讲一些我觉得关键的部分,如创建表、新建字段打开数据库、设置主键、外键这些都不讲,对于SQLite
Expert一点都不懂的朋友能够先百度下怎样使用。把查询到的数据插入到指定表中。去掉反复的
insert into tb_city(location, areacode) select location, areacode from mob_location group by location
同一时候查询两个表
select * from tb_city, mob_location where tb_city.[location] = mob_location.[location]
select * from tb_city, tb_mobile where tb_city.[_id] = tb_mobile.[foreign_id] and tb_mobile.[number] = 1342797
以上语句在java代码中也是适用的,如代码中使用:
String sql = "select * from tb_city, tb_mobile where tb_city.[_id] = tb_mobile.[foreign_id] and tb_mobile.[number] = " + num;
把两个表查询得到的数据插入到一个表中
insert into tb_mobile(foreign_id, number) select tb_city.[_id], mob_location.[_id] from tb_city, mob_location where tb_city.[location] = mob_location.[location]
到这里就把表mob_location分离成tb_city、tb_mobile了,此时看下数据库大小为16M,就把表mob_location右键删除,但发现数据库的大小没有不论什么改变。后来查出来删除仅仅是把它放到缓存。并没有清空,须要在数据库上右键->vacuum,点击清空,再去看下大小就仅仅有3M多一点,这样容量少了非常多,再做下zip压缩,但压缩的效果不是非常理想。
数据库和代码能够到下面链接下载:
SQLite Expert表分离和解决SQLite Expert删除表后大小不变的问题的更多相关文章
- [SQL] 如何在SQL Server2005数据库中检查一个表是否存在,如存在就删除表记录,如不存在就建表.
. 检索 dbo.sysobjects表, select count(*) from dbo.sysobjects where xtype='U' and Name = '你的表名' . 根据返回的结 ...
- spool命令、创建一个表,创建而且copy表,查看别的用户下的表,rowid行地址 索引的时候使用,表的增删改查,删除表,oracle的回收站
1.spool命令 spool "D:\test.txt" spool off SQL> host cls 2.创建一个表 SQL> --条件(1):有创建 ...
- 通过删除hbase表中的region来达到删除表中数据
公司最近在搞一个hbase删除数据,由于在建表的时候是通过region来对每日的数据进行存储的,所以要求在删除的时候直接通过删除region的来删除数据(最好的方案是只删除region中的数据,不把r ...
- 解决SecureCRT中删除会话后无法重建问题
SecureCRT和SecureFX中创建一个会话(例如名为"10.0.2.47")后,如果删除这个会话,然后再创建一个同样名字的会话,就会报错,原因是SecureCRT在C盘上创 ...
- android安卓 SQLite教程:内部架构及SQLite使用办法
SQLite 介绍 SQLite一个非常流行的嵌入式数据库,它支持SQL语言,并且只利用很少的内存就有很好的性能.由于JDBC不适合手机这种内存受限设备,所以Android开发人员需要学习新的API ...
- sql server 中删除表中数据truncate和delete的区别(转载自.net学习网)
我们都知道truncate table可以用来删除整个表的内容,它与delete后面不跟where条件的效果是一样.但除此之外,我们还清楚它们之间有其它的区别吗?本章我们将一起讨论truncate与d ...
- DROP TABLE ** CASCADE CONSTRAINTS PURGE删除表的时候级联删除从表外键
1.关于 cascade constraints 假设A为主表(既含有某一主键的表),B为从表(即引用了A的主键作为外键). 则当删除A表时,如不特殊说明,则 drop table A 系统会出现错误 ...
- SQL 查询分析器操作(修改、添加、删除)表及字段等
一.库操作1..创建数据库命令:create database <数据库名>例如:建立一个名为xhkdb的数据库mysql> create database xhkdb; 2.显示所 ...
- oracle 删除表、数据
truncate ddl语句,删除表中数据,速度要比delete快:且所有自增字段重新开始计数:删除数据保留表结构:删除的数据不进入rollback segment,无法恢复.例: trunc ...
随机推荐
- 测试常用的linux命令
一.系统 1.halt: 关机 poweroff: 关机 2.reboot: 重启 二.处理目录和文件的命令 1.ll: 显示文件详细信息 ls: 显示文件目 ...
- SQL Server数据库的除法默认向下取整,要返回小数的解决方法
num1; / 1000.0 num2; * 1.0 num3; num4; 结果:
- android问题
http://www.cnblogs.com/tianjian/category/330793.html
- java读取配置文件的推荐方法getResource、getResourceAsStream
在java开发中经常会读取配置文件,如果把文件路径写死,就太LOW了,也不符合编码规范. 在网上找了一些资料后,发现有两种方法:xxx.class.getResource("") ...
- Java后端技术微信交流群!工作、学习、技术、资源等!期待你的加入!
<Java后端技术>专注Java相关技术:SSM.Spring全家桶.微服务.MySQL.MyCat.集群.分布式.中间件.Linux.网络.多线程,偶尔讲点运维Jenkins.Nexus ...
- js事件默认行为
事件默认行为: 当一个事件发生的时候浏览器自己默认做的事情 怎么阻止? 当前这个行为是什么事件触发的,然后在这个事件的处理函数中使用 return false; 但是return false 阻止的是 ...
- Jedis 工具类
package com.pig4cloud.pigx.admin.utils; import redis.clients.jedis.*; import java.util.ArrayList; im ...
- mysql异常Incorrect string value: '\xE6\xB5\x8B\xE8\xAF\x95' for column 'region_name'
Incorrect string value: '\xE6\xB5\x8B\xE8\xAF\x95' for column 'region_name' insert语句加的该字段有汉字,乱码造成的 解 ...
- zoj 2109 FatMouse' Trade
FatMouse' Trade Time Limit: 2 Seconds Memory Limit: 65536 KB FatMouse prepared M pounds of cat ...
- POJ3037 Skiing
Skiing 题目大意: 给定一个M*N的网格,已知在每个网格中的点可以向上下左右四个方向移动一个单位,每个点都有一个高度值. 从每个点开始移动时存在一个速度值,从A点移动到B点,则此时B点的速度为& ...