
sqlite-utils
CLISimon Willison 出品的命令行工具与 Python 库:把 JSON、CSV 直接导入 SQLite 并自动建表,对文件跑内存 SQL 查询,还支持全文检索与表结构变换。
sqlite-utils
Python CLI utility and library for manipulating SQLite databases.
Some feature highlights
- Pipe JSON (or CSV or TSV) directly into a new SQLite database file, automatically creating a table with the appropriate schema
- Run in-memory SQL queries, including joins, directly against data in CSV, TSV or JSON files and view the results
- Configure SQLite full-text search against your database tables and run search queries against them, ordered by relevance
- Run transformations against your tables to make schema changes that SQLite
ALTER TABLEdoes not directly support, such as changing the type of a column - Extract columns into separate tables to better normalize your existing data
- Manage database migrations using Python migration files and the
sqlite-utils migratecommand - Install plugins to add custom SQL functions and additional features
Upgrading from sqlite-utils 3.x? See the 4.0 upgrade guide.
Read more on my blog, in this series of posts on New features in sqlite-utils and other entries tagged sqlite-utils.
Installation
pip install sqlite-utils
Or if you use Homebrew for macOS:
brew install sqlite-utils
Using as a CLI tool
Now you can do things with the CLI utility like this:
$ sqlite-utils memory dogs.csv "select * from t"
[{"id": 1, "age": 4, "name": "Cleo"},
{"id": 2, "age": 2, "name": "Pancakes"}]
$ sqlite-utils insert dogs.db dogs dogs.csv --csv
[####################################] 100%
$ sqlite-utils tables dogs.db --counts
[{"table": "dogs", "count": 2}]
$ sqlite-utils dogs.db "select id, name from dogs"
[{"id": 1, "name": "Cleo"},
{"id": 2, "name": "Pancakes"}]
$ sqlite-utils dogs.db "select * from dogs" --csv
id,age,name
1,4,Cleo
2,2,Pancakes
$ sqlite-utils dogs.db "select * from dogs" --table
id age name
---- ----- --------
1 4 Cleo
2 2 Pancakes
You can import JSON data into a new database table like this:
$ curl https://api.github.com/repos/simonw/sqlite-utils/releases \
| sqlite-utils insert releases.db releases - --pk id
Or for data in a CSV file:
$ sqlite-utils insert dogs.db dogs dogs.csv --csv
sqlite-utils memory lets you import CSV or JSON data into an in-memory database and run SQL queries against it in a single command:
$ cat dogs.csv | sqlite-utils memory - "select name, age from stdin"
See the full CLI documentation for comprehensive coverage of many more commands.
Using as a library
You can also import sqlite_utils and use it as a Python library like this:
import sqlite_utils
db = sqlite_utils.Database("demo_database.db")
# This line creates a "dogs" table if one does not already exist:
db["dogs"].insert_all([
{"id": 1, "age": 4, "name": "Cleo"},
{"id": 2, "age": 2, "name": "Pancakes"}
], pk="id")
Check out the full library documentation for everything else you can do with the Python library.
Related projects
- Datasette: A tool for exploring and publishing data
- csvs-to-sqlite: Convert CSV files into a SQLite database
- db-to-sqlite: CLI tool for exporting a MySQL or PostgreSQL database as a SQLite file
- dogsheep: A family of tools for personal analytics, built on top of
sqlite-utils
相關資源

Datasette
CLI把 SQLite 数据库发布成可以浏览、可以查询的网页和 JSON API,支持 SQL 查询、元数据和插件扩展,也能用 datasette publish 部署到 Cloud Run 等平台。适合数据探索和数据新闻,需要 Python 3.10 及以上版本。
simonw/datasette11.5k
Apache Doris MCP Server
MCPApache Doris 官方 MCP:以只读方式让 agent 探查库表元数据、执行与解释 SQL、诊断慢查询,并查看集群状态、导入任务与数据治理信息。需 Python 3.12+ 与 Doris 2.0 以上。
apache/doris-mcp-server351
DuckDB
CLI进程内分析型 SQL 数据库,命令行可直接用 SQL 查询 CSV、Parquet、JSON 文件,无需导入或启动服务,适合 agent 抽样与聚合大文件。官方维护。
duckdb/duckdb42.2k
mycli
CLI带智能补全与语法高亮的 MySQL 终端客户端,兼容 MariaDB、TiDB 等;支持 --execute 与批处理模式,可按 CSV 或表格格式输出查询结果,便于 agent 直接执行 SQL。
dbcli/mycli12k
SQL Queries
SkillAnthropic 官方数据技能,指导 agent 在 Snowflake、BigQuery、Databricks、PostgreSQL 等主流数仓方言下编写、翻译和优化 SQL,涵盖 CTE、窗口函数与聚合分析查询。
anthropics/knowledge-work-plugins29.9k
BigQuery Basics
Skill用 bq 与 gcloud 命令行管理 BigQuery 的数据集、表与作业,运行 SQL 查询并导入数据,附客户端库、MCP 与 Terraform 参考。Google 官方技能,需要 Google Cloud 项目。
google/skills21.4k