#sql-query #sql #query #insight #utility #command-line-tool #cli-interface

app sql-insight-cli

SQL查询分析、格式化和转换的命令行工具

3 个不稳定版本

0.2.0 2024年7月4日
0.1.1 2024年2月12日
0.1.0 2024年2月12日

#1229 in 命令行工具

MIT 许可证

97KB
2K SLoC

sql-insight-cli

基于 sql-insight 构建的命令行界面。它提供了一组 sql-insight 支持的命令。

Crates.io Rust codecov License: MIT

功能

  • SQL 格式化:将 SQL 查询格式化为标准形式,提高可读性和可维护性。
  • SQL 规范化:将 SQL 查询转换为规范形式,使它们更容易分析和处理。
  • 表提取:提取 SQL 查询中引用的表,明确涉及的数据源。
  • CRUD 表提取:识别 SQL 查询中的创建、读取、更新和删除操作,以及每个操作中涉及的表。

附加功能

  • 文件和交互式模式支持:直接从文件或通过交互式 CLI 会话处理 SQL 查询。

安装

使用 Cargo 安装 sql-insight-cli

cargo install sql-insight-cli

用法

sql-insight-cli 支持以下命令。命令可以直接从命令行、使用 --file 选项的文件或交互式方式处理输入。

通用选项

  • --file <path>:从指定的文件读取 SQL 查询而不是命令行参数。
  • 交互式模式:启动交互式 CLI 会话以输入 SQL 查询。通过运行不带 SQL 参数和 --file 选项的命令进入此模式。要退出,请输入 exitquit 或按 Ctrl + C

格式化 SQL

将 SQL 查询格式化为标准样式

sql-insight format "SELECT *  \n FROM users         WHERE id = 1;"

这将输出

SELECT * FROM users WHERE id = 1

规范化 SQL

规范化 SQL 查询,将值抽象为占位符

sql-insight normalize "SELECT *  \n FROM users         WHERE id = 1;"

这将输出

SELECT * FROM users WHERE id = ?

表提取

识别 SQL 查询中涉及的表

sql-insight extract-tables "SELECT * FROM catalog.schema.users as users_alias"

这将输出

catalog.schema.users AS users_alias

CRUD 表提取

提取并识别 CRUD 操作和涉及的表

sql-insight extract-crud "INSERT INTO users (name) SELECT name FROM employees"

这将输出

Create: [users], Read: [employees], Update: [], Delete: []

支持的 SQL 方言

sql-insight-cli 利用 sqlparser-rs 进行解析,支持广泛的 SQL 方言。有关详细列表,请参阅 sqlparser-rs 文档

贡献

欢迎为 sql-insight-cli 做贡献!无论是添加新功能、修复错误还是改进文档,都可以随意克隆仓库并提交拉取请求。

许可证

sql-insight-cli 采用 MIT 许可协议

依赖项

~3MB
~62K SLoC