作为一个嵌入式数据库引擎,SQLite 与其他数据库管理系统相比,缺少了一些功能。不过 SQLite 提供了一个扩展机制,因此我们可以在网络上找到大量的 SQLite 插件。
今天我们介绍的这个插件叫做 sqlean,它打包了许多流行的 SQLite 扩展,提供了清晰的 API,并且进行了测试和文档工作,我们可以将它作为一个 SQLite 扩展的标准库。
包含插件
具体来说,sqlean 打包了以下常用的扩展功能:
- crypto:哈希函数,编码、解码函数。
- define:SQL 自定义函数以及动态 SQL。
- fileio:读写操作系统文件。
- fuzzy:字符串模糊匹配和语音学搜索。
- ipaddr:IP 地址操作(不支持 Windows 平台)。
- math:数学运算函数(SQLite 3.35 开始支持内置这些函数)。
- regexp:正则表达式搜索和替换。
- stats:统计函数。
- text:字符串函数。
- unicode:Unicode 支持。
- uuid:UUID 函数。
- vsv:CSV 文件虚拟表功能。
除了以上扩展之外,我们还可以通过 https://sqlpkg.org/ 搜索和下载大量其他的扩展插件。
下载安装
sqlean 的源代码托管在 GitHub,我们可以选择下载预编译的二进制文件。以 Windows 平台为例,预编译文件包含以下 DLL:
其中,sqlean.dll 文件包含了其他文件中的内容。我们可以在 SQLite 中加载这些扩展,例如:
sqlite> .load ./sqlean
sqlite> select median(value) from generate_series(1, 99);
50.0
另外一种使用方法就是下载打包的 sqlean 命令行工具,它是一个包含了以上扩展的 SQLite 命令行工具。
对于图形开发工具,可以使用 load_extension 函数加载插件。例如:
select load_extension('C:\file_path\sqlean');
Python、JavaScript、Node.js、Go 等编程语言中的安装方法可以参考说明文档。
如果选择使用源码编译,可以下载源文件和依赖文件:
make prepare-dist
make download-sqlite
make download-external
然后基于不同平台执行以下编译命令:
make compile-linux
make compile-windows
make compile-macos
编译之后的扩展库位于 dist 目录。
使用示例
crypto 扩展提供了哈希函数和编码解码函数,例如:
sqlean> select hex(md5('SQLite'));
497757A9C5B2EC17DED656170B51C788
sqlean> select encode('SQLite', 'base64');
U1FMaXRl
sqlean> select decode('U1FMaXRl', 'base64');
SQLite
define 扩展支持自定义的 SQL 函数以及动态 SQL 语句,例如:
sqlean> select define('sumn', ':n * (:n + 1) / 2');
sqlean> select sumn(5);
15
sqlean> select undefine('sumn');
sqlean> select eval('select ''SQLite''');
SQLite
fileio 扩展提供了读写文件的功能,例如:
sqlean> select fileio_write('hello.txt', 'hello world');
11
sqlean> select fileio_read('hello.txt');
hello world
sqlean> select fileio_read('hello.txt', 6);
world
regexp 扩展支持正则表达式搜索和替换,例如:
sqlean> select regexp_like('the year is 2024', '[0-9]+');
1
sqlean> select regexp_replace('the year is 2021', '[0-9]+', '2024');
the year is 2024
stats 扩展提供了一些统计函数,例如:
sqlean> select * from generate_series(5, 20, 5);
5
10
15
20
sqlean> select percentile(value, 25) from generate_series(0, 9);
2.25
uuid 扩展提供了最新版本的 UUID 实现,例如:
sqlean> select uuid4();
0e4f4203-0221-4623-8890-d962ad84641d
sqlean> select uuid7();
01903895-4266-73b1-a5bf-9081a6b45d96
详细的扩展说明可以参考说明文档。
相关项目
- sqlpkg.org:搜索和下载 SQLite 扩展插件。
- sqlime.org:一个在线 SQLite 运行环境。
- sqlpkg:SQLite 扩展包管理器。
- sqlean.py:Python sqlite3 替代模块,包含了 sqlean 扩展插件。
- sqlean.js:JavaSricpt sqlite3 替代包,包含了 sqlean 扩展插件。
- shell:SQLite 命令行工具,包含了 sqlean 扩展插件。