SQLite-xsv 使用教程
项目介绍
SQLite-xsv 是一个用 Rust 编写的 CSV 解析器扩展,专门为 SQLite 设计。它允许用户将 CSV 文件作为 SQLite 虚拟表进行查询,支持 gzip 和 zstd 压缩格式。该项目基于 sqlite-loadable-rs
和 csv
crate 开发,旨在提供最快的 CSV 解析性能。
项目快速启动
安装
使用 npm 安装
npm install sqlite-xsv
使用 Deno 安装
deno install https://deno.land/x/sqlite_xsv
使用 Ruby gem 安装
gem install sqlite-xsv
使用 Rust cargo 安装
cargo add sqlite-xsv
加载扩展
在 SQLite CLI 中加载
load '/xsv0';
select xsv_version(); -- v0.0.1
在 Python 中加载
import sqlite3
con = sqlite3.connect(":memory:")
con.enable_load_extension(True)
con.load_extension("/xsv0")
print(con.execute("select xsv_version()").fetchone()) # ('v0.0.1',)
在 Node.js 中加载
const Database = require("better-sqlite3");
const db = new Database(":memory:");
db.loadExtension("/xsv0");
console.log(db.prepare("select xsv_version()").get()); // { 'xsv_version()': 'v0.0.1' }
应用案例和最佳实践
案例一:查询 CSV 文件
假设有一个名为 students.csv
的文件,内容如下:
id,name,age,score
1,alex,10,9
2,brian,20,8
可以使用以下 SQL 语句查询:
CREATE VIRTUAL TABLE temp.students USING csv(filename="students.csv");
SELECT * FROM students;
案例二:使用压缩文件
假设有一个名为 students.csv.gz
的压缩文件,可以使用以下 SQL 语句查询:
CREATE VIRTUAL TABLE temp.students USING csv(filename="students.csv.gz", compression="gzip");
SELECT * FROM students;
典型生态项目
SQLite-http
SQLite-http 是一个允许 SQLite 通过 HTTP 协议查询远程数据的扩展。结合 SQLite-xsv,可以实现从远程 CSV 文件中查询数据。
Datasette
Datasette 是一个用于探索和发布数据的工具。虽然目前不推荐在公共 Datasette 实例中加载 SQLite-xsv,但未来版本可能会改变这一限制。
Better-SQLite3
Better-SQLite3 是一个用于 Node.js 的高性能 SQLite 库。结合 SQLite-xsv,可以在 Node.js 环境中高效地处理 CSV 数据。
通过以上教程,您可以快速上手并充分利用 SQLite-xsv 扩展,实现高效的 CSV 数据处理。