WinCE下将SQLite数据库导入到另外一个SQLite数据库
在嵌入式数据库当中,SQLite的使用应该算是比较多的了。而就在最近的项目中使用到了。
由于没有实现远程数据库同步功能,因此只有靠下载或者上传文件的方式将数据库同步了。将下载下来的DB3文件的表和数据全部导入到本地数据库当中。同样都是SQLite,处理起来还是比较方便的。分为以下几个步骤:
1. 将源(下载下来的DB3文件)数据库Attach到已经建立连接的本地目标数据库
ATTACH DATABASE 'DB3_file_name' AS SourcesDataBase
|
2. 由于不知道源数据库中有哪些表,因此需要将表明保存下来。使用的语句如下:
select * from SourcesDataBase.sqlite_master WHERE type = 'table'
|
对于表来说,type 字段永远是 ‘table’,name 字段永远是表的名字
3. 在上一步中,已经将源数据库表明保存下来了,这一步要做的就是检查目标数据库库中是否已经存在这个表了,如果存在,可以选择先delete,在insert,也可以直接insert。对于目标数据库中如果没有此表,则可以使用create创建。
select count(*) from [main.]sqlite_master where type='table' and name='table_name';--这里判断一下目标数据库中是否已经存在此表
delete from [main.]table_name;--完全更新的话可以加入这句
INSERT INTO [main.]table_name SELECT * FROM SourcesDataBase.table_name;--将源数据库中的数据copy到目标数据库
CREATE TABLE [main.]table_name AS SELECT * FROM SourcesDataBase.table_name;--创建,并copy数据到目标数据库
|
4. 好了,就这么简单,数据库导入完毕。这个时候不要忘了DETACH
DETACH DATABASE SourcesDataBase
|
在以上遇到一些问题,这么判断PRIMARY KEY, 因为我在使用的时候发现,copy的时候,将PRIMARY KEY也一同复制了,如果是一个自增的index,insert进去的数据就不正确了,可能会出现两个相同的index了。
还有就是在第三步的最后一个语句里面,我如果只想创建表,而不复制里面的数据,该这么写呢?
欢迎大家一起讨论一下。
阅读(3027) | 评论(0) | 转发(0) |