SQLite文件数据库、内存数据库建立及导入导出

一、初识sqlite

偶然的机会接触到sqlite,不禁惊叹sqlite的体型小巧而功能强大(看来软件也不可貌相哦),Sqlite 是开源的内存数据库(也可以称之为内嵌式数据库),大量无私的程序员为sqlite发展贡献了自己的力量。Sqlite 应用极广,手机、mp3,机顶盒可能存在sqlite身影,Apple的Mac os,linux,或者windows在安装第三方软件时也可以应用sqlite。

Sqlite技术优点:

1.  Sqlite轻量级、跨平台的关系型开源内存数据库,使用sqlite只需带上动态库,就可使用sqlite全部功能(动态库Windows下487KB,Linux下347KB);

2.   核心引擎不依赖第三方软件,也不需要安装;

3.   数据库中所有的信息(比如表、视图、触发器、等)都包含在一个文件内。这个文件可以copy到其它目录或其它机器上,也照用不误。如果使用内存方式,可以没有该文件;

4.   除了主流操作系统,SQLite还支持了很多冷门的操作系统。它对很多嵌入式系统(比如Android、Windows Mobile、Symbin、Palm、VxWorks等)也支持;

5.   SQLite的API不区分当前操作的数据库是在内存还是在文件(对于存储介质是透明的);

等等;

    缺点:

1.    并发访问的锁机制
SQLite在并发(包括多进程和多线程)读写方面的性能不太理想。数据库可能会被写操作独占,从而导致其它读写操作阻塞或出错;

2.     SQL标准支持不全

如不支持外键约束;

看来还是优点多于缺点!呵呵!

二、sqlite体系机构

sqlite模块将 查询过程分为几个不连续的任务,在结构栈的顶部编译查询语句,中不执行,在底部处理操作系统的存储和接口。

图1-2SQLite的体系结构

(注:结构图转载于《SQLite权威指南》)

三、sqlite文件数据库、内存数据库建立及导入导出

sqlite官网(www.sqlite.org)同时提供已编译版本和源程序。同时适用于Windows和linux。

经过前面sqlite热身之后,赶紧转入正题,干点正事!(*^__^*)

3.1 文件数据库、内存数据库的建立

3.1.1文件数据库的建立

Windows:

1)  下载sqlite最新版本sqlite3.exe;

2)  dos进入到执行程序目录下;

3)  输入 sqlite3  d:\test.db(如果后面执行路径存在test.db 则打开数据库;如果执行路径下不存在test.db则新建test.db);

Linux:

1)  下载sqlite最新版本sqlite3;

2)  Shell进入到可知性程序目录下;

3) 输入sqlite3  /home/test.db(如果后面执行路径存在test.db 则打开数据库;如果执行路径下不存在test.db则新建test.db);

至此则打开或者新建一个文件数据库库;

3.1.2 内存数据库的建立

[cpp] 
view plain
copy
print
?

  1. C代码示例:
  2. sqlite3 *db;
  3. rc = sqlite3_open(":memory:",&db);    // 内存中创建一个数据库
  4. 3.2 文件数据库、内存数据库的导入导出
  5. C代码示例:
  6. ////////////////////////////////////////////////////////////////////////////////////////////
  7. //参数说明:
  8. //pInMemory: 指向内存数据库指针
  9. //zFilename: 指向文件数据库目录的字符串指针
  10. //isSave  0: 从文件数据库载入到内存数据库 1:从内存数据库备份到文件数据库
  11. ////////////////////////////////////////////////////////////////////////////////////////////
  12. int loadOrSaveDb(sqlite3 *pInMemeory, const char *zFilename, int isSave)
  13. {
  14. int rc;
  15. sqlite3 *pFile;
  16. sqlite3_backup *pBackup;
  17. sqlite3 *pTo;
  18. sqlite3 *pFrom;
  19. rc = sqlite3_open(zFilename, &pFile);
  20. if(rc == SQLITE_OK)
  21. {
  22. pFrom = (isSave?pInMemeory:pFile);
  23. pTo = (isSave?pFile:pInMemeory);
  24. pBackup = sqlite3_backup_init(pTo,"main",pFrom,"main");
  25. if(pBackup)
  26. {
  27. (void)sqlite3_backup_step(pBackup,-1);
  28. (void)sqlite3_backup_finish(pBackup);
  29. }
  30. rc = sqlite3_errcode(pTo);
  31. }
  32. (void)sqlite3_close(pFile);
  33. return rc;
  34. }

调用实例:

[cpp] 
view plain
copy
print
?

  1. int ret = 0;
  2. char *filename = “d:\\test.db”;
  3. sqlite3 *memoryDb;
  4. ret = sqlite3_open(“memory:”, &memoryDb);
  5. ret = loadOrSaveDb(memoryDb, filename, 0) //文件数据库导入到内存数据库

3.3 文件数据库命令格式的导入导出

3.3.1 文件数据库命令格式数据导出、备份

方法一:(sqlite数据库内部)

Sqlite>.output d:\test.sql

Sqlite>.dump

Sqlite>.output stdout

方法二:(dos命令行)

sqlite3 525.db .dump>haha.sql

3.3.2文件数据库命令格式数据导入

sqlite>.read  file.sql

时间: 2024-11-08 19:22:27

SQLite文件数据库、内存数据库建立及导入导出的相关文章

Postgresql数据库数据简单的导入导出

Postgresql数据库数据简单的导入导出 博客分类: DataBase postgres 命令操作: 数据的导出:pg_dump -U postgres(用户名)  (-t 表名)  数据库名(缺省时同用户名)  > c:\fulldb.sql 数据的导入:psql -U postgres(用户名)  数据库名(缺省时同用户名) < C:\fulldb.sql pgAdmin操作: 数据的导出:在库名上右击-->backup-->ok,即将数据保存到.backup文件中. 数据

Oracle数据库密码重置、导入导出库命令

重置办法如下:打开CMD命令提示符,然后输入下面命令进行重置: 输入sqlplus /nolog,回车 SQL> conn /as sysdba 已连接: SQL>alter user system identified by "123456"; ---(123456就是重置的密码了) SQL>alter user sys identified by "123456"; 下面介绍的是导入导出的实例,向导入导出看实例基本上就可以完成,因为导入导出很简

MongoDB数据库备份恢复与导入导出

一.mongodump/mongorestore方式 使用场景:数据库导出指定collection,无法手工修改导出文件(二进制)允许条件:数据库原始collection导入操作前可以被删除(处理方式:插入)或者保留(处理方式:删除然后插入)导出数据格式:二进制类型,不可手工修改 1.备份数据库指定collection C:\Users\Administrator>mongodump -d webdb -c users -o e:\webdb_users_dumpconnected to: 12

MySql导入导出数据库(含远程导入导出)

一.导入导出本地数据库    导出: 1.先运行cmd,cd 到mysql安装目录中的bin文件夹 2.mysqldump -u root -p 数据库名 > 导出文件名.sql 其他情况下: 1.导出整个数据库     mysqldump -u 用户名 -p 数据库名 > 导出的文件名     mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql   2.导出一个表     mysqldump -u 用户名 -p 数据库名 表名> 导出的文

在linux环境上对oracle数据库的数据泵导入导出操作

需求:公司搭建的报表库环境数据来自于生产环境oracle数据,因此需要使用kettle将oracle数据每天定时导入到报表数据库中(本文不讨论如何用kettle导数据,不赘述),若要导数据我们需要一套完善的生产oracle数据库的表结构.同时环境搭建以及oracle数据库都在linux环境下部署,因此,需要在linux环境下使用数据泵技术将数据完成导入导出 以上为需求概述 具体实现(即:操作步骤): su - root --切换root用户(由于不知道oracle用户的密码使用root来登录or

oracle数据库表空间创建&amp;导入&amp;导出

1.表空间创建 --删除表空间 drop tablespace EVPBDMGIS including contents and datafiles; --删除用户 drop user EVPBDMGIS cascade; --创建表空间 create tablespace EVPBDMGIS datafile 'D:\app\Administrator\oradata\orcl\EVPBDMGIS.DBF' size 500m reuse autoextend on next 16m maxs

SQL Server 之 在数据库之间进行数据导入导出

第一步,启用Ad Hoc Distributed Queries: exec sp_configure 'show advanced options',1; reconfigure; exec sp_configure 'Ad Hoc Distributed Queries',1; reconfigure; 第二步,

Oracle 数据库导入导出 dmp文件

首先询问对方数据库的表空间名称和大小,然后在你的oracle中建立相应表空间,最后使用命令导入.导出数据.补充:1.要新建一个数据库: Oracle数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令可 以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本 地导入到远处的数据库服务器中. 利用这个功能可以构建两个相同的数据库,一 个用来测试,一个用来正式使用.例如:imp命令导入数据:imp username/[email protected]SI

oracle数据库导入导出命令

大多情况都可以用Oracle数据导入导出完成数据的备份和还原(不会造成数据的丢失). Oracle有个好处,虽然你的电脑不是服务器,但是你装了oracle客户端,并建立了连接 (通过Net Configuration Assistant添加正确的服务命名,其实你可以想成是客户端与服务器端 修了条路,然后数据就可以被拉过来了) 这样你可以把数据导出到本地,虽然可能服务器离你很远. 你同样可以把dmp文件从本地导入到远处的数据库服务器中. 利用这个功能你可以构建俩个相同的数据库,一个用来测试,一个用