sqlite3操作备注

Posted yxtxiaotian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlite3操作备注相关的知识,希望对你有一定的参考价值。

目录

一、基本操作命令(Linux)

二、使用.output/.dump/.read 命令,通过脚本来 保存或创建 数据库表

三、另一种使用 .dump 命令导出导入整个数据库 的例子

四、使用 .import 导入数据库表的内容

五、附加数据库 attach/detach


 

 

一、基本操作命令(Linux)

1. sqlite3 数据库不用创建,系统命令行下直接执行"sqlite3 yangxt.db"则会进入到数据库,如果没有该数据库则自动创建;

2. sqlite3命令行下执行 .databases 可以查看数据库;.table 可以查看数据库表; .schema table_name 可以查看创建表的sql;

3. .separator STRING 改变 .output输出模式 和 .import 所使用的分隔符;.nullvalue STRING 在有NULL值的地方输出STRING;

4. .show 查看当前各种配置值; .timer ON|OFF 开启|关闭 定时器;.help 查看所有命令;

5. .backup 命令使用方法 还未作详细了解,待补充。。。。。。

二、使用.output/.dump/.read 命令,通过脚本来 保存或创建 数据库表

1. sqlite3命令行下执行 .output file_name.sql 将输出重定向到文件,文件名和后缀自定义则可;

2. 如果已有数据库,可以使用 .dump [table_name]将数据库表的创建导出到脚本;如果没有参数table_name则表示导出整个数据库;

# 使用.dump 命令将数据库yangxt.db导出(yangxt.db事先创建并插入了数据)
[root@localhost sqlite3_yxt]# sqlite3 yangxt.db 
SQLite version 3.6.20
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .output create_yangxt_db.sql
sqlite> .dump # 导出整个数据库,目前只有一个表yangxt
sqlite> .exit
[root@localhost sqlite3_yxt]# cat create_yangxt_db.sql 
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE yangxt(
		ID INTEGER PRIMARY KEY,
		SensorID INTEGER,
		SiteNum INTEGER,
		Time VARCHAR(12),
		SensorParameter REAL
	);
INSERT INTO "yangxt" VALUES(1,1,1,'200605011306',16.4);
INSERT INTO "yangxt" VALUES(2,1,1,'200605011206',18.9);
COMMIT;
[root@localhost sqlite3_yxt]# 

3. 使用 .read fine_name.sql 可以执行文件里面的sql语句,通过脚本自动创建数据库;

# 使用 .read 命令执行sql脚本,创建数据库表
[root@localhost sqlite3_yxt]# sqlite3 yangxt.db 
SQLite version 3.6.20
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .table
yangxt
sqlite> select * from yangxt;
1|1|1|200605011306|16.4
2|1|1|200605011206|18.9
sqlite> .header on     # 显示表头
sqlite> .mode colum # 列左对齐
sqlite> .timer on    # 开启定时器
sqlite> select * from yangxt;
ID          SensorID    SiteNum     Time          SensorParameter
----------  ----------  ----------  ------------  ---------------
1           1           1           200605011306  16.4           
2           1           1           200605011206  18.9           
CPU Time: user 0.000000 sys 0.000000
sqlite> drop table yangxt;
CPU Time: user 0.000000 sys 0.002000
sqlite> .table
sqlite> .read create_yangxt_db.sql 
CPU Time: user 0.000000 sys 0.000000
CPU Time: user 0.000000 sys 0.000000
CPU Time: user 0.000000 sys 0.001000
CPU Time: user 0.000000 sys 0.000000
CPU Time: user 0.000000 sys 0.000000
CPU Time: user 0.000000 sys 0.000000
sqlite> .table
yangxt
sqlite> select * from yangxt;
ID          SensorID    SiteNum     Time          SensorParameter
----------  ----------  ----------  ------------  ---------------
1           1           1           200605011306  16.4           
2           1           1           200605011206  18.9           
CPU Time: user 0.000000 sys 0.000000
sqlite> 

三、另一种使用 .dump 命令导出导入整个数据库 的例子

# 使用 .dump 导出整个数据库 
[root@localhost sqlite3_yxt]# ls
create_yangxt_db.sql  yangxt1.db  yangxt.db  yangxt_table.txt
[root@localhost sqlite3_yxt]# sqlite3 yangxt.db .dump > create_yangxt_table.sql  # 导出数据库到create_yangxt_table.sql文件
[root@localhost sqlite3_yxt]# ls
create_yangxt_db.sql     yangxt1.db  yangxt_table.txt
create_yangxt_table.sql  yangxt.db
[root@localhost sqlite3_yxt]# cat create_yangxt_table.sql 
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE yangxt(
		ID INTEGER PRIMARY KEY,
		SensorID INTEGER,
		SiteNum INTEGER,
		Time VARCHAR(12),
		SensorParameter REAL
	);
INSERT INTO "yangxt" VALUES(1,1,1,'200605011306',16.4);
INSERT INTO "yangxt" VALUES(2,1,1,'200605011206',18.9);
COMMIT;
[root@localhost sqlite3_yxt]# rm -f yangxt.db 
[root@localhost sqlite3_yxt]# ls
create_yangxt_db.sql  create_yangxt_table.sql  yangxt1.db  yangxt_table.txt
[root@localhost sqlite3_yxt]# sqlite3 yangxt.db < create_yangxt_table.sql  # 重新导入数据库
[root@localhost sqlite3_yxt]# ls
create_yangxt_db.sql     yangxt1.db  yangxt_table.txt
create_yangxt_table.sql  yangxt.db
[root@localhost sqlite3_yxt]# sqlite3 yangxt.db
SQLite version 3.6.20
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .table
yangxt
sqlite> select * from yangxt;
1|1|1|200605011306|16.4
2|1|1|200605011206|18.9
sqlite> 

四、使用 .import 导入数据库表的内容

# 使用 .import 命令导入数据到数据库表
[root@localhost sqlite3_yxt]# ls
create_yangxt_db.sql  create_yangxt_table.sql  yangxt1.db  yangxt.db
[root@localhost sqlite3_yxt]# sqlite3 yangxt.db 
SQLite version 3.6.20
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .table
yangxt
sqlite> select * from yangxt;
1|1|1|200605011306|16.4
2|1|1|200605011206|18.9
sqlite> .output yangxt_table.txt 
sqlite> select * from yangxt; # 测试,先把yangxt表的数据导出到yangxt_table.txt文件
sqlite> .output stdout
sqlite> .exit
[root@localhost sqlite3_yxt]# ls
create_yangxt_db.sql     yangxt1.db  yangxt_table.txt
create_yangxt_table.sql  yangxt.db
[root@localhost sqlite3_yxt]# cat yangxt_table.txt # 查看导出的yangxt表的数据内容
1|1|1|200605011306|16.4
2|1|1|200605011206|18.9
[root@localhost sqlite3_yxt]# sqlite3 yangxt.db 
SQLite version 3.6.20
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .table
yangxt
sqlite> select * from yangxt;
1|1|1|200605011306|16.4
2|1|1|200605011206|18.9
sqlite> delete from yangxt; # 把yangxt表中原来的内容删除
sqlite> select * from yangxt; # 查询确认yangxt表中内容已经被删除
sqlite> .import yangxt_table.txt yangxt     # 将上面导出到yangxt_table.txt文件的yangxt表内容重新导入到表
sqlite> select * from yangxt;     # 导入表之后再次查询,数据内容和我们导入的内容一致
1|1|1|200605011306|16.4
2|1|1|200605011206|18.9
sqlite> 

五、附加数据库 attach/detach

1. 作用:同时使用多个数据库(假如是DB1和DB2)的数据(比如DB1.table1 和 DB2.table1),SQLite提供了一种将外部数据库附加到当前数据库连接的机制——Attach DB;

2. 基本命令

ATTACH DATABASE 'DatabaseName' As Alias-Name;
ATTACH DATABASE Alias-Name;

这里面需要注意几个点: 
(1)attach语句的第一个参数必须在单引号之内,且必须是相对于当前SQLite终端的完整路径文件名。 
(2)attach语句的第二个参数可以用单引号,也可以不用。 
(3)对于attach进来的数据库,是一个as后面的参数(附加数据库别名)作为ID,也就是说:如果想附加多个数据库,需要指定不同的别名,别名不可重复;同一个数据库可以多次附加,只要保证使用不同的别名即可。

3. 附加数据库的更新和同步机制

SQLite的Attach DB机制是一种非常宽松的机制,对于附加数据库,可以同步和被同步。你可以在直接连接DB2中更新数据库,数据会同步更新到附加连接,也即可以在附加连接(DB2作为附加数据库)中查看到更新内容,反之亦然。这种机制很强大和灵活,但也增加了风险性。自己创建2个数据库test1.db 和 test2.db,进行更新试验则可得出结论。

参见:SQLite实用武器库(4)附加数据库(Attach DB)

六、双方都

 

 

 

 

 

 

 

 

以上是关于sqlite3操作备注的主要内容,如果未能解决你的问题,请参考以下文章

sqlite3接口API函数备注

sqlite3接口API函数备注

ExtJs 4:如何在一个请求中发送所有修改、新和删除的记录?

Linux下sqlite3常用命令!!!

测试工具不够用了?来拿啊!

键盘用的手感不一样 跟新和旧有啥关系?