关于 sqlite-utils
sqlite-utils 通过命令行接口管理 SQLite 数据库。它支持直接从 JSON、CSV 等格式导入数据,执行查询并检查数据库结构。
主要功能
- 01从 JSON 或其他格式将数据插入 SQLite 表
- 02查询和检查数据库表、列及其属性
- 03使用 Python 脚本或 shell 命令组合数据操作
适用场景
- 01编码 Agent 处理和转换结构化数据集
- 02在自动化工作流中快速建立数据库进行分析
- 03从多个源汇总数据到单个数据库中
安装
选择你的系统或包管理器,复制命令到终端运行。
$
安装完成后运行sqlite-utils --version确认安装成功。
命令示例
常用命令按使用顺序排列。
01
02
详细介绍
sqlite-utils
用于操作 SQLite 数据库的 Python 命令行工具和库。
功能亮点
- 直接将 JSON(或 CSV 或 TSV)通过管道传入新的 SQLite 数据库文件,并根据相应的架构自动创建表
- 运行内存中的 SQL 查询,包括联接,直接查询 CSV、TSV 或 JSON 文件中的数据并查看结果
- 针对数据库表配置 SQLite 全文搜索,并运行搜索查询,结果按相关性排序
- 对表运行数据转换,以进行 SQLite 的
ALTER TABLE不直接支持的架构变更,例如更改列类型 - 将列提取到单独的表中,以更好地规范化现有数据
- 使用 Python 迁移文件和
sqlite-utils migrate命令管理数据库迁移 - 安装插件,添加自定义 SQL 函数和其他功能
从 sqlite-utils 3.x 升级?请参阅 4.0 升级指南。
更多内容请阅读我的博客系列文章sqlite-utils 新功能以及其他标记为 sqlite-utils 的文章。
安装
pip install sqlite-utils
或者,如果你在 macOS 上使用 Homebrew:
brew install sqlite-utils
作为命令行工具使用
现在,你可以像这样使用命令行工具:
$ 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
你可以像这样将 JSON 数据导入新的数据库表:
$ curl https://api.github.com/repos/simonw/sqlite-utils/releases \
| sqlite-utils insert releases.db releases - --pk id
对于 CSV 文件中的数据,也可以这样操作:
$ sqlite-utils insert dogs.db dogs dogs.csv --csv
sqlite-utils memory 可以将 CSV 或 JSON 数据导入内存数据库,并在一条命令中对其运行 SQL 查询:
$ cat dogs.csv | sqlite-utils memory - "select name, age from stdin"
请查看完整的命令行文档,了解更多命令的详细说明。
作为库使用
你也可以像这样 import sqlite_utils,并将其用作 Python 库:
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")
请查看完整的库文档,了解使用 Python 库可以完成的其他操作。
相关项目
- Datasette:用于探索和发布数据的工具
- csvs-to-sqlite:将 CSV 文件转换为 SQLite 数据库
- db-to-sqlite:用于将 MySQL 或 PostgreSQL 数据库导出为 SQLite 文件的命令行工具
- dogsheep:一系列用于个人数据分析的工具,构建于
sqlite-utils之上
评论
支持 Markdown