4 个版本

0.0.4 2023 年 11 月 1 日
0.0.3 2023 年 11 月 1 日
0.0.2 2023 年 11 月 1 日
0.0.1 2023 年 10 月 8 日

#1785 in 数据库接口

MIT 许可证

555KB
2.5K SLoC

TisQ - SQL 数据库的终端 UI

TisQ [tɪz-kjuː] 代表 终端 接口SQL 查询

"gif recording"

特性

  • 以树形视图浏览服务器、数据库、模式和表。
  • 编写和执行 SQL 查询。
  • 以表格形式查看查询执行结果。
  • 在不同连接之间切换多个查询标签。
  • 通过配置 TOML 文件自定义按键绑定。
  • 退出时保存查询编辑器的内容,启动时恢复。

状态

正在积极开发中。尚未准备好用于生产,没有测试,错误处理不完整,程序可能在某些输入上崩溃。

请注意,在 crates.io 上发布的版本是虚拟的,因为由于使用了 git 依赖项,无法在这里正确发布构建。GitHub 上发布的版本是正确的。

数据库支持

目前仅支持 Postgres,并且类型集非常有限。

安装

使用脚本

在 bash shell 中运行

curl -s https://raw.githubusercontent.com/strowk/tisq/main/install.sh | bash

在 Linux bash 和 Windows Git Bash 上进行了测试。也应该适用于 MacOS。

禁用 sudo

默认情况下,脚本会尝试将 TisQ 安装到 /usr/local/bin,并需要 sudo 权限,但您可以通过设置 NO_SUDO 环境变量来禁用此行为

curl -s https://raw.githubusercontent.com/strowk/tisq/main/install.sh | NO_SUDO=1 bash

Windows Git Bash 默认禁用 sudo。

从源代码安装

如果您的系统/架构不支持上面的脚本,您可以使用 Rust 从源代码安装 TisQ

git clone https://github.com/strowk/tisq
cargo install --path ./tisq

使用 Docker

您可以在 Docker 容器中运行 TisQ

docker run -it --rm ghcr.io/strowk/tisq:main-debian
# or
docker run -it --rm ghcr.io/strowk/tisq:main-alpine

请注意,在 main-* 标签中的版本将来自 main 分支的最新提交。构建基于 Debian 和 Alpine Linux,支持 x86_64 和 aarch64 架构。

按键绑定

以下一些按键绑定是可配置的,可以在位于主目录下 .tisq/config.toml 的配置文件中进行调整。

此文件的格式可以通过以下示例说明

# Firstly specify the section for keybindings
[keybindings.globals] # word "globals" here is a name of the keybinding config section
# Then use keybinding name as a key and list of possible key presses as a value
GlobalExit = [
    # This would allow to use Esc key without any modifiers
    { modifiers = "", key = { type = "Esc" } },
    # Or, alternatively use Ctrl+C combination, both would work
    { modifiers = "Ctrl", key = { type = "Char", args = "c" } },
]

本示例演示了如何指定特殊键,例如Esc,使用简单的type = "Esc",以及如何使用type = "Char"和包含字符的args字段来指定字符。

全局

配置部分:globals

默认键绑定 描述 配置名称
Ctrl+c, Esc 退出 GlobalExit
Alt+Left / Ctrl+Alt+Left 向左导航 GlobalNavigateLeft
Alt+Right / Ctrl+Alt+Right 向右导航 GlobalNavigateRight
Alt+Up / Ctrl+Alt+Up 向上导航 GlobalNavigateUp
Alt+Down / Ctrl+Alt+Down 向下导航 GlobalNavigateDown

浏览器(树视图)

配置部分:browser

默认键绑定 描述 配置名称
a 添加新服务器 BrowserAddServer
删除 删除服务器 -
q 为选定的数据库打开查询编辑器 BrowserDatabaseOpenQueryEditor
上,下 导航 -
右,左 打开,关闭节点 -

查询编辑器

配置部分:editor

默认键绑定 描述 配置名称
Ctrl+PageUp 上一个查询编辑器标签 EditorPrevTab
Ctrl+PageDown 下一个查询编辑器标签 EditorNextTab
Ctrl+Alt+Enter / Ctrl+E / Ctrl+R 执行查询 EditorExecute
Ctrl+W 关闭编辑器标签 EditorCloseTab
Ctrl+Space 尝试展开代码片段 EditorTryExpand
Ctrl+/ 注释或取消注释行 EditorToggleComment

查询结果

配置部分:result

默认键绑定 描述 配置名称
Ctrl+Left 向左滚动列 ResultOffsetColumnLeft
Ctrl+Right 向右滚动列 ResultOffsetColumnRight
上,下 移动选定的行指针 -
PageUp, PageDown 按页移动 -

代码片段

代码片段是小快捷方式,可以扩展为SQL代码。

目前只支持标准Postgres代码片段,但将来可以添加自定义代码片段。

支持的代码片段

代码片段 展开
cq 当前查询
ds 数据库大小
ts 表大小
cl 当前锁
sel SELECT * FROM
ins INSERT INTO
upd UPDATE
del DELETE FROM
cre CREATE TABLE
alt ALTER TABLE
dro DROP TABLE
trun TRUNCATE TABLE

路线图

  • 通过TOML配置文件自定义键绑定
  • 退出时保存查询编辑器内容并在启动时恢复
  • 将模式和表添加到树视图
  • 添加标准Postgres代码片段扩展
  • 显示可用的代码片段
  • 允许添加自定义代码片段
  • 将其他对象添加到树视图(视图、函数等)
  • 在树视图中显示表列
  • 状态行:显示查询执行时的加载状态
  • 添加对更多Postgres类型的支持(从https://docs.rs/sqlx-postgres/0.7.2/sqlx_postgres/types/index.html
  • 错误处理:删除所有unwrap()调用以及任何可能导致panic的内容
  • 在UI中自定义键绑定
  • 主题:通过TOML配置文件自定义样式
  • 添加对查询参数的支持
  • 添加对查询历史的支持
  • 添加对查询执行计划的 support
  • 通过分页支持具有大量结果集的查询
  • 通过行数限制查询结果大小
  • 通过内存大小更好地限制查询结果(使用https://docs.rs/datasize/latest/datasize/
  • 查询编辑器的语法高亮显示
  • 数据库:添加对MySQL的支持
  • 数据库:添加对SQLite的支持
  • 数据库:添加对MS SQL Server的支持(通过 https://github.com/prisma/tiberius

依赖项

~30–45MB
~792K SLoC