前言
昨天在群里,xiong老师提到了一款PG的终端界面管理工具:rainfrog。大致看了下这个工具的github上边的相关介绍,眼睛不禁一亮。这款工具对于开发人员而言,应该是简洁而且高效。能满足很多场合下的使用。使用惯了远程终端的人,估计越发的喜欢这款工具。
这个工具的工程地址在:https://github.com/achristmascarl/rainfrog[1] 有兴趣的,可以直接翻着看下。
相关介绍
1、rainfrog的目标
提供一个轻量级的、面向终端的客户端工具,用于替代pgadmin和dbeaver。
2、功能特性
通过类似于vim的按键绑定和鼠标控制来导航 查询编辑器,支持关键字高亮和会话历史 支持快速复制数据、过滤表以及schema切换 快捷查看表的元数据和属性 跨平台支持(同时支持macOS, linux, windows, 通过termux支持android)
3、免责声明
该软件目前正在积极开发中; 期待突破性的变化,使用时请自行承担风险。不建议将此工具用于对生产数据库的写操作。
4、安装
4.1、通过Cargo安装
在安装完rust之后,使用cargo安装rainfrog。比如我在macOS上就是通过它来安装。
rust rustc --version 127 ↵
rustc 1.75.0 (82e1608df 2023-12-21)
机器上以前的版本太老,先进行一下升级。
rust rustup update
info: syncing channel updates for 'stable-aarch64-apple-darwin'
info: latest update on 2024-09-05, rust version 1.81.0 (eeb90cda1 2024-09-04)
info: downloading component 'cargo'
。。。。。。
stable-aarch64-apple-darwin updated - rustc 1.81.0 (eeb90cda1 2024-09-04) (from rustc 1.75.0 (82e1608df 2023-12-21))
升级到rust-1.81.0, 在这之后,就可以顺利安装rainfrog了。
cargo install rainfrog
Updating crates.io index
Downloaded rainfrog v0.2.5
Downloaded 1 crate (67.8 KB) in 0.40s
Installing rainfrog v0.2.5
Updating crates.io index
Locking 419 packages to latest compatible versions
Finished `release` profile [optimized] target(s) in 2m 21s
Installing /Users/i062873/.cargo/bin/rainfrog
Installed package `rainfrog v0.2.5` (executable `rainfrog`)
最终得到rain frog-v0.2.5
4.2、Arch Linux上的安装
pacman -S rainfrog
4.3、termux用户
如果使用 Termux,需要通过其包管理器安装 Rust:pkg install rust
然后使用 Termux 特性安装 Rainfrog(禁用默认特性):
cargo install rainfrog --features termux --no-default-features
4.4、安装脚本
Rainfrog 提供了简单的安装脚本来下载并解压二进制文件到 ~/.local/bin/
目录。你可能需要将该目录添加到系统的 PATH
变量中。安装脚本需要 jq
和 fzf
工具的支持。
curl -LSsf https://raw.githubusercontent.com/achristmascarl/rainfrog/main/install.sh | bash
4.5、手动下载二进制文件
手动从最新版本页面下载并解压适合你操作系统的二进制文件。
将二进制文件移动到你的 PATH
环境变量目录中。
5、使用介绍
Usage: rainfrog [OPTIONS]
Options:
-M, --mouse <MOUSE_MODE> Whether to enable mouse event support. If enabled, your terminal\'s default mouse event handling will not
work. [possible values: true, false]
-u, --url <URL> Full connection URL for the database, e.g. postgres://username:password@localhost:5432/dbname
--username <USERNAME> Username for database connection
--password <PASSWORD> Password for database connection
--host <HOST> Host for database connection (ex. localhost)
--port <PORT> Port for database connection (ex. 5432)
--database <DATABASE> Name of database for connection (ex. postgres)
-h, --help Print help
-V, --version Print version
根据上边的帮助,最常用的就是:
指定参数:
rainfrog \
--username <username> \
--host <hostname> \
--port <db_port> \
--database <db_name>
或者直接通过 -u 指定连接串来连接目标数据库。
如:rainfrog -u postgres://username:password@localhost:5432/postgres
或者使用docker运行:
docker run --platform linux/amd64 -it --rm --name rainfrog \
--add-host host.docker.internal:host-gateway \
-e username="<username>" \
-e password="<password>" \
-e hostname="host.docker.internal" \
-e db_port="<db_port>" \
-e db_name="<db_name>" achristmascarl/rainfrog:latest
6、快捷键参考
通用快捷键
keybinding | description |
---|---|
Ctrl+c | 退出程序 |
Alt+1 , Ctrl+k | 切换到菜单栏 |
Alt+2 , Ctrl+j | 切换到查询编辑器 |
Alt+3 , Ctrl+h | 切换到查询历史 |
Alt+4 , Ctrl+g | 切换到结果 |
Tab | 向前循环焦点 |
Shift+Tab | 向后循环焦点 |
q , Alt+q (查询编辑器中) | 终止当前查询 |
菜单
keybinding | description |
---|---|
j , ↓ | 向下移动选择 |
k , ↑ | 向上移动选择 |
g | 跳到列表顶端 |
G | 跳到列表底端 |
h , ← | 聚焦到模式(如果有多个) |
l , → | 聚焦到表 |
/ | 过滤表 |
Esc | 清除搜索 |
Backspace | 聚焦到表 |
Enter when searching | 聚焦到表 |
Enter with selected schema | 聚焦到表 |
Enter with selected table | 预览表(100 行) |
R | 重新加载模式和表 |
查询编辑器
Keybinding | Description |
---|---|
Alt+Enter , F5 | 执行查询 |
j , ↓ | 向下移动光标 |
k , ↑ | 向上移动光标 |
h , ← | 向左移动光标 |
l , → | 向右移动光标 |
w | 光标移动到下一个字的开头 |
e | 光标移动到下一个字的结尾 |
b | 光标移动到上一个字的开头 |
0 | 光标移动到行首 |
$ | 光标移动到行尾 |
gg | 跳到编辑器顶部 |
G | 跳到当前列表底部 |
Esc | 返回正常模式 |
i | 进入插入(编辑)模式 |
I | 在行首插入 |
A | 在行尾插入 |
o | 在下面新建一行并插入 |
v | 进入可视(选择)模式 |
V | 选择整行 |
r | 开始替换操作 |
y | 开始复制操作 |
x | 开始剪切操作 |
p | 从剪贴板粘贴 |
u | 撤销 |
Ctrl+r | 重做 |
Ctrl+e | 向下滚动 |
Ctrl+y | 向上滚动 |
查询历史
keybinding | description |
---|---|
j , ↓ | 向下移动选择 |
k , ↑ | 向上移动选择 |
g | 跳到列表顶端 |
G | 跳到列表底端 |
y | 复制选中查询 |
I | 在编辑器中编辑选中查询 |
D | 删除所有历史记录 |
结果
keybinding | description |
---|---|
j , ↓ | 向下滚动 |
k , ↑ | 向上滚动 |
h , ← | 向左滚动 |
l , → | 向右滚动 |
b | 向右滚动 |
e , w | 向左滚动 |
{ , PageUp , Ctrl+b | 向上翻页 |
} , PageDown , Ctrl+f | 向下翻页 |
g | 跳到表顶端 |
G | 跳到表底端 |
0 | 跳到第一列 |
$ | 跳到最后一列 |
v | 选择单元格 |
V | 选择整行 |
Enter | 向内选择 |
Backspace | 向外选择 |
y | 复制选中内容 |
Esc | 停止选择 |
7、其他相关软件工具
除了 Rainfrog,市场上还有一些功能强大的 PostgreSQL 数据库管理工具,例如:
pgAdmin:这是一个功能齐全但比较重的数据库管理工具,提供了图形化界面和众多高级功能,对于需要更多图形化操作的用户来说是一个不错的选择。 DBeaver:支持多种数据库,跨平台使用,具有良好的扩展性和插件支持,非常适合需要管理多种数据库的开发者。 TablePlus:一款界面简洁,操作便捷的数据库管理工具,支持多种数据库,对于用户体验进行了良好的优化。
每款工具都有其独特的优点,开发者可以根据自己的需求选择最合适的工具进行数据库管理。Rainfrog 作为一款轻量级的终端工具,特别适合那些喜欢在终端中完成所有操作的开发者。
使用效果
我直接在macOS上按照上边4.1节的步骤进行安装,简单连接了一下目标数据库:
rainfrog -u postgres://mydb:test123@10.47.43.138:5555/mydb
它连接完以后,看到的界面如下图:
确实很是简洁。
总结一下
rainfrog总的来说,功能还是非常强大的。简单的postgresql数据库连接及操作是没有什么问题的。因为目前还没到1.0,意味着很多功能有待继续开发或增强。比如,对于双向SSL的连接方式是否支持,还真不一定。有待考证。
另外,对于使用vi比较陌生的朋友,可能学习曲线会稍长一些。毕竟那大片大片的快捷键,就需要一段时间去适应。
工具是一个好工具,是否趁手,还得看个人喜好。
我的原则就是,用自己最熟悉最快捷省时间、最顺手最不容易犯错的工具。看好rainfrog。工具箱里又多了一个备胎。
参考资料
ttps://github.com/achristmascarl/rainfrog: https://github.com/achristmascarl/rainfrog
个人微信:_iihero
CSDN: iihero
墨天轮:https://www.modb.pro/u/16258 (Sean)
pgfans: iihero
往期导读:
1. PostgreSQL中配置单双向SSL连接详解
2. 提升PSQL使用技巧:PostgreSQL中PSQL使用技巧汇集(1)
3. 提升PSQL使用技巧:PostgreSQL中PSQL使用技巧汇集(2)
4. PostgreSQL SQL的基础使用及技巧
5. PostgreSQL开发技术基础:过程与函数
6. PostgreSQL中vacuum 物理文件truncate发生的条件
7. PostgreSQL中表的年龄与Vacuum的实验探索:Vacuum有大用
8. PostgreSQL利用分区表来弥补AutoVacuum的不足
9. 也聊聊PostgreSQL中的空间膨胀与AutoVacuum
10. 正确理解SAP BTP中hyperscaler PG中的IOPS (AWS篇)