#sqlite #table #excel #spreadsheet #sqlite-extension #xlsx #ods

x2bool/xlite

使用SQLite查询Excel电子表格(.xlsx, .xls, .ods)

7个版本

0.2.0 2023年1月21日
0.1.5 2022年10月9日
0.1.4 2022年8月27日
0.1.2 2022年7月30日

#2006数据库接口

1,239 星 & 10 关注者

200KB
5.5K SLoC

包含 (ZIP文件,6KB) tests/abcdef_colnames.xlsx,(ZIP文件,5KB) tests/abcdef.xlsx

XLite - 将Excel (.xlsx, .xls) 和Open Document电子表格 (.ods) 作为SQLite虚拟表查询

XLite 是一个用Rust编写的SQLite扩展。这个库的主要目的是允许从SQLite中处理电子表格,将其作为 虚拟表 暴露。

下载

build

以下预构建库可用于 下载

release

Linux Windows MacOS
x86 libxlite.so.tar.gz xlite.dll.zip N/A
x86-64 libxlite.so.tar.gz xlite.dll.zip libxlite.dylib.zip
AArch64 (ARM64) libxlite.so.tar.gz libxlite.dylib.zip

这一步将生成 libxlite.solibxlite.dylibxlite.dll,具体取决于您的操作系统。

如何使用

假设您已安装sqlite3命令行工具,当前目录下有 libxlite 库和磁盘上的某些电子表格文件,您可以加载此扩展

sqlite3 # will open SQLite CLI
> .load libxlite # or "xlite" on Windows

这将加载 xlite 模块,现在可以使用它来创建虚拟表。

创建虚拟表(本示例使用测试目录下的.xlsx文件)

CREATE VIRTUAL TABLE test_data USING xlite (
    FILENAME './tests/abcdef_colnames.xlsx',
    WORKSHEET 'Sheet1',
    RANGE 'A2:F', -- optional
    COLNAMES '1' -- optional
);

说明:此语句将根据名为"Sheet1"的工作表创建虚拟表。

可选的RANGE参数在此处用于跳过表中的第一行。A2:F的含义是use columns from A to F but start from 2nd row

查询

SELECT A, B, C, D, E, F FROM test_data;

列名根据它们在电子表格中的名称(索引)命名,除非提供了可选的COLNAMES参数 - 在这种情况下,列名将来自由此选项指定的电子表格中的行。

SELECT COUNT(*), D FROM test_data GROUP BY D ORDER BY COUNT(*);

只要虚拟表机制支持,就可以在电子表格上执行SQLite支持的所有操作。

删除

DROP TABLE test_data;

此语句将仅删除虚拟表。物理文件不会被删除。

如何构建

cargo build --release

限制

目前不支持INSERTUPDATEDELETE语句。

关于

此项目是实验性的,并且作为一项业余爱好项目在我业余时间开发和维护。

依赖项

~7MB
~191K SLoC