创建博客 登录  
 关注
   显示下一条  |  关闭

剥壳记

Everything

 
 
 

日志

 
 

学用SQLite的一些心得备忘  

2011-12-24 10:51:53|  分类: SQL数据库 |  标签: |字号 订阅

1.全部导出

sqlite3 data.db
>.output dd.sql
>.dump

2.全部导入

sqlite3 mydb.db
>.read dd.sql

3.管理

sqlite3.exe d:/test.db //假设数据是 d:/test.db
>.databases //显示所有数据库
>.tables //显示当前数据库的表格
>.schment tablename;  //显示表格结构
>.output c://1.sql  //导出当前数据库的
>.dump
>.import c://1.sql //导入


.help                              数据库管理用“.”开头,不要“;”结尾
select … from … ;             SQL语句用“;”结尾,不要“.”开头

4.导入: .import

sqlite> .import 文件名 表名
注1: 不要忘了开头的点
注2: 这条语句不能用分号结束. 非SQL不需要分号结束.
注3: 需要查看默认的分隔符separator. 必须一致. 如果不一致可能导致sqlite字段分割错误.
        查看分隔符使用命令  .show , 如果不一致可直接修改, 比如:
        sqlite>.separator ","
        将分隔符转为逗号.
举例1:
将文件a.csv中的数据导入表 tab_xx. (a.csv中字段以逗号分割)
sqlite> .separator ","
sqlite> .import a.csv tab_xx
sqlite>
导入结束.

5.导出:.output

实现方式: 将输出重定向至文件.
命令: .output
sqlite> .output a.txt
然后输入sql语句, 查询出要导的数据. 查询后,数据不会显示在屏幕上,而直接写入文件.
结束后,输入
sqlite> .output stdout
将输出重定向至屏幕.
举例2:
将 tab_xx 中的数据导出到文件a.txt
sqlite> .output a.txt
sqlite> select * from tab_xx;
sqlite> .output stdout
导出完毕.

6.收缩sqlite数据库

只要执行 vacuum 命令就可以收缩数据库了

 

 

 

7.SQLite 不支持的 SQL 特性

支持的绝大多数 SQL92 特性,不支持的如下:

(1)、外键约束(FOREIGN KEY constraints), 外键约束会被解析但不会被执行。

(2)、RIGHT 和 FULL OUTER JOIN(RIGHT OUTER JOIN and FULL OUTER JOIN)。LEFT OUTER JOIN 已经实现,但还没有 RIGHT OUTER JOIN 和 FULL OUTER JOIN

(3)、完整的触发器支持(Complete trigger support),现在有一些触发器的支持,但是还不完整。 缺少的特性包括 FOR EACH STATEMENT 触发器(现在所有的触发器都必须是 FOR EACH ROW ), 在表上的 INSTEAD OF 触发器(现在 INSTEAD OF 触发器只允许在视图上), 以及递归触发器——触发自身的触发器。

(4)、完整的 ALTER TABLE 支持(Complete ALTER TABLE support),只支持 ALTER TABLE 命令的 RENAME TABLE 和 ADD COLUMN。 其他类型的 ALTER TABLE 操作如 DROP COLUMN,ALTER COLUMN,ADD CONSTRAINT 等等均被忽略。

(5)、嵌套事务(Nested transactions),现在的实现只允许单一活动事务。
(6)、可写视图(Writing to VIEWs),SQLite 中的视图是只读的。无法在一个视图上执行 DELETE,INSERT,UPDATE。 不过你可以创建一个试图在视图上 DELETE,INSERT,UPDATE 时触发的触发器,然后在触发器中完成你所需要的工作。

(7)、GRANT 和 REVOKE(GRANT and REVOKE),由于 SQLite 读和写的是一个普通的磁盘文件, 因此唯一可以获取的权限就是操作系统的标准的文件访问权限。 一般在客户机/服务器架构的关系型数据库系统上能找到的 GRANT 和 REVOKE 命令对于一个嵌入式的数据库引擎来说是没有意义的, 因此也就没有去实现。

 

8.连接字符串

http://www.connectionstrings.com/sqlite

SQLite.NET

Data Source=filename;Version=3;

UseUTF16Encoding=True;

Password=myPassword;

Legacy Format=True; //Using the pre 3.3x database format

Pooling=False;Max Pool Size=100;//With connection pooling

Read Only=True; //Read only connection

DateTimeFormat=Ticks; //Using DateTime.Ticks as datetime format

BinaryGUID=False; //Store GUID as text

Cache Size=2000; //Specify cache size

Page Size=1024; //Specify page size

Enlist=N;//Disable enlistment in distributed transactions

FailIfMissing=True; //Disable create database behaviour(当数据库文件不存在是,不自动创建数据库文件(默认是创建的))

Max Page Count=5000; //Limit the size of database

Journal Mode=Off; //Disable the Journal File

Journal Mode=Persist; //Persist the Journal File

Synchronous=Full; //Controling file flushing

 

Finisar.SQLite ADO.NET Data Provider

New=True;//Create a new database

Compress=True; //Using compression

Cache Size=3000; //Specifying Cache Size

 

SQLite3 ODBC Driver

DRIVER=SQLite3 ODBC Driver;Database=mydb.db;LongNames=0;Timeout=1000;NoTXN=0;SyncPragma=NORMAL;StepAPI=0;

 

.NET Framework Data Provider for ODBC

Bridging to SQLite3 ODBC Driver

DRIVER=SQLite3 ODBC Driver;Database=mydb.db;LongNames=0;Timeout=1000;NoTXN=0;SyncPragma=NORMAL;StepAPI=0;

  评论这张
转发至微博
转发至微博
0   分享到:        
阅读(102)| 评论(0)| 引用 (0) |举报
<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--相关文章--> <#--历史上的今天--> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2012