SQLite教程(八):命令行工具介绍

工欲善其事,必先利其器。学好SQLite的命令行工具,对于我们学习SQLite本身而言是非常非常有帮助的。最基本的一条就是,它让我们学习SQLite的过程更加轻松愉快。言归正传吧,在SQLite的官方下载网站,提供了支持多个平台的命令行工具,使用该工具我们可以完成大多数常用的SQLite操作,就像sqlplus之于Oracle。以下列表给出了该工具的内置命令:

命令名 命令说明
.help 列出所有内置命令。
.backup DBNAME FILE 备份指定的数据库到指定的文件,缺省为当前连接的main数据库。
.databases 列出当前连接中所有attached数据库名和文件名。
.dump TABLENAME ... 以SQL文本的格式DUMP当前连接的main数据库,如果指定了表名,则只是DUMP和表名匹配的数据表。参数TABLENAME支持LIKE表达式支持的通配符。
.echo ON|OFF 打开或关闭显示输出。
.exit 退出当前程序。
.explain ON|OFF 打开或关闭当前连接的SELECT输出到Human Readable形式。
.header(s) ON|OFF 在显示SELECT结果时,是否显示列的标题。
.import FILE TABLE 导入指定文件的数据到指定表。
.indices TABLENAME 显示所有索引的名字,如果指定表名,则仅仅显示匹配该表名的数据表的索引,参数TABLENAME支持LIKE表达式支持的通配符。
.log FILE|off  打开或关闭日志功能,FILE可以为标准输出stdout,或标准错误输出stderr。
.mode MODE TABLENAME 设置输出模式,这里最为常用的模式是column模式,使SELECT输出列左对齐显示。
.nullvalue STRING  使用指定的字符串代替NULL值的显示。
.output FILENAME  将当前命令的所有输出重定向到指定的文件。
.output stdout  将当前命令的所有输出重定向到标准输出(屏幕)。
.quit  退出当前程序。 
.read FILENAME  执行指定文件内的SQL语句。
.restore DBNAME FILE  从指定的文件还原数据库,缺省为main数据库,此时也可以指定其它数据库名,被指定的数据库成为当前连接的attached数据库。
.schema TABLENAME 显示数据表的创建语句,如果指定表名,则仅仅显示匹配该表名的数据表创建语句,参数TABLENAME支持LIKE表达式支持的通配符。
.separator STRING 改变输出模式和.import的字段间分隔符。
.show 显示各种设置的当前值。
.tables TABLENAME 列出当前连接中main数据库的所有表名,如果指定表名,则仅仅显示匹配该表名的数据表名称,参数TABLENAME支持LIKE表达式支持的通配符。
.width NUM1 NUM2 ... 在MODE为column时,设置各个字段的宽度,注意:该命令的参数顺序表示字段输出的顺序。

  见如下常用示例:

1). 备份和还原数据库。
 

代码如下:

--在当前连接的main数据库中创建一个数据表,之后再通过.backup命令将main数据库备份到D:/mydb.db文件中。
    sqlite> CREATE TABLE mytable (first_col integer);
    sqlite> .backup 'D:/mydb.db'
    sqlite> .exit
    --通过在命令行窗口下执行sqlite3.exe以重新建立和SQLite的连接。
    --从备份文件D:/mydb.db中恢复数据到当前连接的main数据库中,再通过.tables命令可以看到mytable表。
    sqlite> .restore 'D:/mydb.db'
    sqlite> .tables
    mytable

2). DUMP数据表的创建语句到指定文件。
 

代码如下:

--先将命令行当前的输出重定向到D:/myoutput.txt,之后在将之前创建的mytable表的声明语句输出到该文件。
    sqlite> .output D:/myoutput.txt
    sqlite> .dump mytabl%
    sqlite> .exit
    --在DOS环境下用记事本打开目标文件。
    D:\>notepad myoutput.txt

3). 显示当前连接的所有Attached数据库和main数据库。
 

代码如下:

sqlite> ATTACH DATABASE 'D:/mydb.db' AS mydb;
    sqlite> .databases
    seq  name               file
    ---  ---------------  ------------------------
    0    main
    2    mydb                D:\mydb.db

4). 显示main数据库中的所有数据表。
 

代码如下:

sqlite> .tables
    mytable

5). 显示匹配表名mytabl%的数据表的所有索引。
 

代码如下:

sqlite> CREATE INDEX myindex on mytable(first_col);
    sqlite> .indices mytabl%
    myindex

6). 显示匹配表名mytable%的数据表的Schema信息。
 

代码如下:

--依赖该表的索引信息也被输出。
    sqlite> .schema mytabl%
    CREATE TABLE mytable (first_col integer);
    CREATE INDEX myindex on mytable(first_col);

7). 格式化显示SELECT的输出信息。
 

代码如下:

--插入测试数据
    sqlite> INSERT INTO mytable VALUES(1);
    sqlite> INSERT INTO mytable VALUES(2);
    sqlite> INSERT INTO mytable VALUES(3);   
    --请注意没有任何设置时SELECT结果集的输出格式。
    sqlite> SELECT * FROM mytable;
    1
    2
    3   
    --显示SELECT结果集的列名。
    --以列的形式显示各个字段。
    --将其后输出的第一列显示宽度设置为10.
    sqlite> .header on
    sqlite> .mode column
    sqlite> .width 10
    sqlite> SELECT * FROM mytable;
    first_col
    ----------
    1
    2
    3

(0)

相关推荐

  • SQLite教程(十四):C语言编程实例代码(2)

    三.高效的批量数据插入: 在给出操作步骤之前先简单说明一下批量插入的概念,以帮助大家阅读其后的示例代码.事实上,批量插入并不是什么新的概念,在其它关系型数据库的C接口API中都提供了一定的支持,只是接口的实现方式不同而已.纵观众多流行的数据库接口,如OCI(Oracle API).MySQL API和PostgreSQL API等,OCI提供的编程接口最为方便,实现方式也最为高效.SQLite作为一种简单灵活的嵌入式数据库也同样提供了该功能,但是实现方式并不像其他数据库那样方便明显,它只是通过一

  • SQLite之Autoincrement关键字(自动递增)

    SQLite 的 AUTOINCREMENT 是一个关键字,用于表中的字段值自动递增.我们可以在创建表时在特定的列名称上使用 AUTOINCREMENT 关键字实现该字段值的自动增加. 注意点:整型字段可以使用关键字AUTOINCREMENT. 语法 AUTOINCREMENT关键字的基本用法如下: CREATE TABLE table_name( column1 INTEGER AUTOINCREMENT, column2 datatype, column3 datatype, ..... c

  • python查询sqlite数据表的方法

    本文实例讲述了python查询sqlite数据表的方法.分享给大家供大家参考.具体实现方法如下: import sqlite3 as db conn = db.connect('mytest.db') conn.row_factory = db.Row cursor = conn.cursor() cursor.execute("select * from person") rows = cursor.fetchall() for row in rows: print("%s

  • SQLite教程(十二):锁和并发控制详解

    一.概述: 在SQLite中,锁和并发控制机制都是由pager_module模块负责处理的,如ACID(Atomic, Consistent, Isolated, and Durable).在含有数据修改的事务中,该模块将确保或者所有的数据修改全部提交,或者全部回滚.与此同时,该模块还提供了一些磁盘文件的内存Cache功能.     事实上,pager_module模块并不关心数据库存储的细节,如B-Tree.编码方式.索引等,它只是将其视为由统一大小(通常为1024字节)的数据块构成的单一文件

  • Sqlite数据库里插入数据的条数上限是500

    今天在向Sqlite数据库里插入数据的时候,报了这样一个错: 复制代码 代码如下: "too many terms in compound SELECT" 去Stackoverflow上查了一下,发现有人回答这个问题:链接 原来一次性向数据库里插入数据的条数不能太多,上限是500条.超出会报错. 解决方案就是只好分多次插入数据库了.

  • SQLite教程(八):命令行工具介绍

    工欲善其事,必先利其器.学好SQLite的命令行工具,对于我们学习SQLite本身而言是非常非常有帮助的.最基本的一条就是,它让我们学习SQLite的过程更加轻松愉快.言归正传吧,在SQLite的官方下载网站,提供了支持多个平台的命令行工具,使用该工具我们可以完成大多数常用的SQLite操作,就像sqlplus之于Oracle.以下列表给出了该工具的内置命令: 命令名 命令说明 .help 列出所有内置命令. .backup DBNAME FILE 备份指定的数据库到指定的文件,缺省为当前连接的

  • Node.js中的package.json与cnpm命令行工具介绍

    一.包 Nodejs 中除了它自己提供的核心模块外,我们可以自定义模块,也可以使用第三方的模块.Nodejs 中第三方模块由包组成,可以通过包来对一组具有相互依赖关系的模块进行统一管理. 完全符合 CommonJs 规范的包目录一般包含如下这些文件. package.json :包描述文件. bin :用于存放可执行二进制文件的目录. lib :用于存放 JavaScript 代码的目录. doc :用于存放文档的目录. 在 NodeJs 中通过 NPM 命令来下载第三方的模块(包). http

  • 使用Python编写类UNIX系统的命令行工具的教程

    引言 您是否能编写命令行工具?也许您可以,但您能编写出真正好用的命令行工具吗?本文讨论使用 Python 来创建一个强健的命令行工具,并带有内置的帮助菜单.错误处理和选项处理.由于一些奇怪的原因,很多人并不了解 Python? 的标准库具有制作功能极其强大的 *NIX 命令行工具所需的全部工具. 可以这样说,Python 是制作 *NIX 命令行工具的最佳语言,因为它依照"batteries-included"的哲学方式工作,并且强调提供可读性高的代码.但仅作为提醒,当您发现使用 Py

  • 使用node打造自己的命令行工具方法教程

    一.实现一个简单的功能 二.环境 1.系统: window 10 2.编辑器: vscode 3.node版本: 8.7.0 三.开始玩 1.打开命令行,新建一个pa'ckage.json npm init 这时看到一个新的package.json生成了,使用编辑器打开 2.修改package.json,新增一个bin属性 { "name": "my-cli", "version": "1.0.0", "descri

  • go Cobra命令行工具入门教程

    目录 简介 为什么需要cobra 基本概念 安装 命令行工具 入门实践 命令构成 新增命令 如何显示自己的命令用法 总结 简介 Github:https://github.com/spf13/ cobraStar:26.5K Cobra是一个用Go语言实现的命令行工具.并且现在正在被很多项目使用,例如:Kubernetes.Hugo和Github CLI等.通过使用Cobra,我们可以快速的创建命令行工具,特别适合写测试脚本,各种服务的Admin CLI等.比如 Mattermost 项目,就写

  • Vue命令行工具Vue-CLI图文详解(推荐!)

    目录 阐述 vue全家桶 vue-cli Vue CLI 的安装 ① 默认安装 vue/cli 脚手架 3 ② 默认安装失败,解决mode版本问题 ③ nvm下载太慢问题解决 ④ 安装 Node ^12.0.0 ⑤ 从新安装 VueCli 脚手架 3 ④ 拉取 2.x 模板 (旧版本) ⑤ 安装vue指定版本 ⑥ 博主node版本 初始化项目 ① vue init命令讲解 ② 项目初始化 ③ 目录结构详解 ④ 运行项目 node 安装适合小白 1 去node官网下载 2 下载完成后双击安装包,跳

  • 详解用Node.js写一个简单的命令行工具

    本文介绍了用Node.js写一个简单的命令行工具,分享给大家,具体如下: 操作系统需要为Linux 1. 目标 在命令行输入自己写的命令,完成目标任务 命令行要求全局有效 命令行要求可以删除 命令行作用,生成一个文件,显示当前的日期 2. 代码部分 新建一个文件,命名为sherryFile 文件sherryFile的内容 介绍: 生成一个文件,文件内容为当前日期和创建者 #! /usr/bin/env node console.log('command start'); const fs = r

  • Linux 命令行工具解析和格式化输出 JSON的方法

    JSON 是一种轻量级且与语言无关的数据存储格式,易于与大多数编程语言集成,也易于人类理解 -- 当然,如果格式正确的话.JSON 这个词代表 J ava S cript O bject N otation,虽然它以 JavaScript 开头,而且主要用于在服务器和浏览器之间交换数据,但现在正在用于许多领域,包括嵌入式系统.在这里,我们将使用 Linux 上的命令行工具解析并格式化打印 JSON.它对于在 shell 脚本中处理大型 JSON 数据或在 shell 脚本中处理 JSON 数据非

  • Golang 基于 flag 库实现一个简单命令行工具

    目录 前言 flag 库 FlagSet 需求拆解 实现 weather flag 天气数据打印 获取源数据 数据转换 运行效果 小结 前言 Golang 标准库中的 flag 库提供了解析命令行选项的能力,我们可以基于此来开发命令行工具. 假设我们想做一个命令行工具,我们通过参数提供[城市],它自动能够返回当前这个[城市]的天气状况.这样一个简单的需求,今天我们就来试一下,看怎样实现. flag 库 Package flag implements command-line flag parsi

  • 在vbs运行命令行工具后让命令窗口保持打开状态的脚本

    问: 您好,脚本专家!如何在运行像 Ping 或 Ipconfig 这样的工具后让命令窗口保持打开状态? -- DB 答: 您好,DB.这个问题让我们想起了往事.有一个脚本专家刚来 Microsoft,那时许多人认为 WMI 和 ADSI 对于脚本编写者来说太难使用.因此,人们建议这个脚本专家不使用 WMI 或 ADSI,而是干脆使用 VBScript 作为调用命令行工具的方法.事实上,这个脚本专家编写的第一章就是一个关于事件日志管理的章节,该章后来成为 Microsoft Windows 20

随机推荐