sqlite

sqlite 直接打开数据库文件,检查结构和行数据,修改数据、导出表、执行原生 SQL,并创建 SQL 转储。

数据库版本 1.1.5稳定
lil-terminal

概览

sqlite 直接操作数据库文件:打开文件、检查表和列、查看或修改行、导出数据、执行原生 SQL,并且无需独立数据库服务器即可创建 SQL 备份。

存放在文件中的数据库

SQLite 是存放在普通文件中的关系型 SQL 数据库,并直接嵌入打开它的进程。它不需要独立数据库服务器或网络登录,因此非常适合学习、本地工具以及许多中小型应用。但数据库规则仍然存在:事务、索引、约束、文件权限和并发写入都需要认真处理。

语法

lil-terminal
sqlite [options] · sqlite : <sql>

参考

sqlite

显示当前 SQLite 数据库文件

sqlite -c <file> [-f] [-m [name]]

打开 SQLite 数据库;文件不存在时 -f 会创建它

-use <file>

打开另一个现有 SQLite 数据库

-l

显示已附加的数据库文件

-t

列出表和视图

-s <table>

显示列和数据类型

-n <table> [rows]

预览表行

-f <table> <text> [rows]

在表的各列中查找文本

-o <table> [-j|-csv] [file] [-f]

导出表行

-a <table> : <json>

从 JSON 对象插入一行

-w <table> <field> <value> : <json>

用 JSON 对象更新匹配的行

-d <table> <field> <value>

删除匹配的行

-m [name]

把当前数据库保存到 .lil.key;默认使用文件名

-M <name>

删除已保存的数据库

-k [name]

列出已保存的数据库,或检查其中一个

-K <name>

打开已保存的数据库

-e

关闭已选择的数据库文件

sqlite : <sql>

执行原生 SQL

sqlite load <file.sql>

执行文件中的 SQL

sqlite dump [file.sql] [-f]

创建结构和数据转储

用途

sqlite 直接操作数据库文件,不需要单独的数据库服务器。需要 PHP SQLite3 扩展和正确的文件权限。

操作步骤

sqlite -c db/shop.sqlite 打开已有文件,-f 允许创建新文件。-t/-s/-n/-f 查看表、字段、数据和搜索结果。-o 导出 JSON/CSV;sqlite : 执行 SQL,dump/load 处理 SQL 脚本。

限制与安全

没有 -f 时不会创建缺失的文件,也不接受符号链接。修改或执行 load 前先复制备份。-m 可将文件路径存入 .lil.key,用 -k/-K/-M 管理。单表导出最多 100,000 行。

交互式 sandbox 预览

可直接在页面中运行预先准备的示例。结果已预先生成并在浏览器中显示;服务器不会执行任何终端命令。

打开 SQLite 文件并检查数据

安装与管理

安装当前兼容版本。完整功能请选择 Base,精简包请选择 Minimum;已安装模块的更新请使用 upgrade。

Base 与 Minimum 是同一当前模块版本的两个包。

Base 包

安装包含本地参考和全部已发布模式的完整包。

install sqlite
Minimum 包

安装精简包。该包不包含本地参考;help <cmd> -i 会打开当前服务器参考。

install sqlite -m
精确公开版本

安装这个确切的已发布版本。

install sqlite -v 1.1.5
检查或升级

让 upgrade 检查兼容性,仅在需要时替换已安装块。

upgrade sqlite
删除模块

删除扩展块,不影响核心和其他模块。

install sqlite -u

示例

示例可复制,但网站不会执行。请先检查路径、权限和破坏性选项。

打开 SQLite 文件并检查数据
sqlite -c db/shop.sqlite
Status  connected
File    sandbox/db/shop.sqlite
SQLite  (version depends on the host)
显示当前 SQLite 数据库文件
sqlite
Status  connected
File    sandbox/db/shop.sqlite
SQLite  (version depends on the host)
打开 SQLite 数据库;文件不存在时 -f 会创建它
sqlite -c db/new-shop.sqlite -f
Status  connected
File    sandbox/db/new-shop.sqlite
SQLite  (version depends on the host)
打开 SQLite 数据库;文件不存在时 -f 会创建它
sqlite -c db/shop.sqlite -m shop-demo
Status  connected
File    sandbox/db/shop.sqlite
SQLite  (version depends on the host)
Saved   shop-demo
打开另一个现有 SQLite 数据库
sqlite -use db/shop.sqlite
Status  connected
File    sandbox/db/shop.sqlite
显示已附加的数据库文件
sqlite -l
seq	name	file
0	main	sandbox/db/shop.sqlite
列出表和视图
sqlite -t
name	type
orders	table
products	table
显示列和数据类型
sqlite -s products
cid	name	type	notnull	dflt_value	pk
0	id	INTEGER	0	NULL	1
1	sku	TEXT	1	NULL	0
2	name	TEXT	1	NULL	0
3	category	TEXT	1	NULL	0
4	price	REAL	1	NULL	0
5	active	INTEGER	1	1	0
预览表行
sqlite -n products 3
id	sku	name	category	price	active
1	SHOE-1	City shoe	shoes	79.9	1
2	SHOE-2	Trail shoe	shoes	109.0	1
3	BAG-1	Canvas bag	bags	44.5	1
在表的各列中查找文本
sqlite -f products "shoe" 3
id	sku	name	category	price	active
1	SHOE-1	City shoe	shoes	79.9	1
2	SHOE-2	Trail shoe	shoes	109.0	1
导出表行
sqlite -o products -j
[
  {
    "id": 1,
    "sku": "SHOE-1",
    "name": "City shoe",
    "category": "shoes",
    "price": 79.9,
    "active": 1
  },
  {
    "id": 2,
    "sku": "SHOE-2",
    "name": "Trail shoe",
    "category": "shoes",
    "price": 109.0,
    "active": 1
  },
  {
    "id": 3,
    "sku": "BAG-1",
    "name": "Canvas bag",
    "category": "bags",
    "price": 44.5,
    "active": 1
  },
  {
    "id": 4,
    "sku": "HAT-1",
    "name": "Summer hat",
    "category": "accessories",
    "price": 25.0,
    "active": 0
  }
]
导出表行
sqlite -o products -csv tmp/products.csv
Saved  sandbox/tmp/products.csv
处理不存在的数据库文件
sqlite -o products -csv tmp/products.csv -f
Saved  sandbox/tmp/products.csv
从 JSON 对象插入一行
sqlite -a products : {"sku":"NEW-1","name":"Sample","category":"test","price":5,"active":1}
Inserted  1
ID        5
用 JSON 对象更新匹配的行
sqlite -w products sku HAT-1 : {"price":24}
Updated  1
删除匹配的行
sqlite -d products sku HAT-1
Deleted  1
执行原生 SQL
sqlite : SELECT category, COUNT(*) AS total FROM products GROUP BY category
category	total
accessories	1
bags	1
shoes	2
Time  (varies) ms
创建结构和数据转储
sqlite dump tmp/shop-backup.sql
Saved  sandbox/tmp/shop-backup.sql
执行文件中的 SQL
sqlite load db/sqlite.sql
SQLite error: table products already exists
把当前数据库保存到 .lil.key;默认使用文件名
sqlite -m shop-demo
Saved  shop-demo
列出已保存的数据库,或检查其中一个
sqlite -k
No saved connections
打开已保存的数据库
sqlite -K missing
Saved connection not found: missing
删除已保存的数据库
sqlite -M missing
Saved connection not found: missing
关闭已选择的数据库文件
sqlite -e
+
打开 SQLite 数据库;文件不存在时 -f 会创建它
sqlite -c db/missing.sqlite
Database file not found
打开另一个现有 SQLite 数据库
sqlite -c db/shop.sqlite -use db/missing.sqlite
Database file not found
显示列和数据类型
sqlite -s missing_table
Table not found: missing_table

本示例使用的文件: sandbox/db/sqlite.sql

该示例使用受保护的 /sandbox/ 文档工作区中的文件或目录。

CREATE TABLE products (
  id INTEGER PRIMARY KEY,
  sku TEXT UNIQUE NOT NULL,
  name TEXT NOT NULL,
  category TEXT NOT NULL,
  price REAL NOT NULL,
  active INTEGER NOT NULL DEFAULT 1
);
INSERT INTO products (sku,name,category,price,active) VALUES
('SHOE-1','City shoe','shoes',79.90,1),
('SHOE-2','Trail shoe','shoes',109.00,1),
('BAG-1','Canvas bag','bags',44.50,1);

相关文档

当前公开版本

v1.1.52026-11-01

生产级完善

sqlite 的当前稳定版本。sqlite 直接打开数据库文件,检查结构和行数据,修改数据、导出表、执行原生 SQL,并创建 SQL 转储。