数据库sqlite3的查询导入导出等基本操作

android的联系人等数据以sqlite3的数据库形式存放,这多少有点儿出人意外。如何通过sqlite3直接访问这些数据库呢?

启动一个android虚拟机后(当然也可用adb启动),在android sdk的platform tools目录下,用adb shell,进入shell命令状态。(在虚拟机上dev tools中,打开终端模拟器,可跑sqlite3,亦可用这些命令,但由于无root权限,进入某些目录会有问题)cd data,进入模拟器的安装程序目录,再cd data ,进入数据目录,可看到所有应用的包名,进入某一包名,会找到或在databases目录下找到XXXX.db,即是此应用的sqlite3数据库。

以下以android例子的com.example.android.notepad例子为例。进入包名/database目录下,发现note_pad.db。

用sqlite3 not_pad.db打开该数据库。.help可显示sqlite3中所有命令(均以.起头),注意,note_pad.db需加上.db,否则sqlite3会为你创建一新库note_pad。

.tables显出所有表。可看到有notes表

select * from notes;显示出此表数据,正是在测试此notespad时插入的几条数据,当然中文在命令行模式下显示不正常。回到模拟器中该应用,插入英文note一条,再次select 该表,果然显示出新加的数据。最前面一列的整数据称是系统自动生成。

默认情况下显示数据列以“|”分隔,若想更清晰的显示,可如下设置:

.mode column 以列模式显示

.header on  显示列头名

这样就和其它数据库如mysql等显示比较一致了。

如何看到此表的列名称呢?

.schema notes;

CREATE TABLE notes (_id INTEGER PRIMARY KEY,title TEXT,note TEXT,created INTEGER,modified INTEGER);

显示出此表的创建语句,可看到第一列为_id。

sqlite> update notes set title='aaaaaaa' where _id=5;

用select及在模拟器上查看,该条note标题确实改为aaaaaa。

DUMP数据:

.dump notes
BEGIN TRANSACTION;
CREATE TABLE notes (_id INTEGER PRIMARY KEY,title TEXT,note TEXT,created INTEGER
,modified INTEGER);
INSERT INTO "notes" VALUES(1,'鐪嬪惂1111','鐪嬪惂鐪嬬湅鐪嬬湅',1302680160108,130
2771249086);
INSERT INTO "notes" VALUES(3,'骞垮憡骞垮憡骞垮憡','骞垮憡骞垮憡骞垮憡',130268022
7262,1302835188606);
INSERT INTO "notes" VALUES(4,'骞垮憡骞垮憡','骞垮憡骞垮憡',1302688689028,1302688
699108);
INSERT INTO "notes" VALUES(5,'aaaaaaa','sunwei hahahaha
',1303091079578,1303091120585);
COMMIT;

可将此表及数据dump出来(当然是屏幕上)。

若要将数据库文件dump入一个文本文件呢?

.dump notes;

将在标准输出显示数据库的dump。

若前加.output /data/kkk.sql,则会将执行的sql命令及select输出的结果等存入kkk.sql,然而对于.dump,仅会显示BEGIN TRAN和COMMIT。无其中内容。如何将内容dump入文件呢?

sqlite3 note_pad.db ".dump" >kkk.sql   等效于echo ".dump" | sqlite3 note_pad >kkk.sql

在系统下执行以上命令即可。实际上是利用sqlite3的命令行行式和系统的重定向功能。因为

sqlite3 note_pad.db "select *from notes;"可连接数据库并执行select语句输出,那么重定向至文件当然可以。

那么将数据导入库呢?

sqlite3 note_pad <kkk.sql(注意,将note_pad.db中数据导入note_pad库中,note_pad非note_pad.db)

当然,此数据库也支持事务。

BEGIN TRANSACTION;COMMIT;

sqlite3 -html note_pad.db "select * from notes;",将会以html形式显示数据(大约是表格吧),若用重定向存为文件,自然就是个网页了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值