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 数据库接口
555KB
2.5K SLoC
TisQ - SQL 数据库的终端 UI
TisQ [tɪz-kjuː] 代表 终端 接口 为 SQL 查询。
特性
- 以树形视图浏览服务器、数据库、模式和表。
- 编写和执行 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