善用佳软之PostgreSQL的rust终端界面客户端工具:rainfrog

文摘   科技   2024-09-28 10:03   上海  

前言

昨天在群里,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 变量中。安装脚本需要 jqfzf 工具的支持。

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、快捷键参考

通用快捷键

keybindingdescription
Ctrl+c退出程序
Alt+1, Ctrl+k切换到菜单栏
Alt+2, Ctrl+j切换到查询编辑器
Alt+3, Ctrl+h切换到查询历史
Alt+4, Ctrl+g切换到结果
Tab向前循环焦点
Shift+Tab向后循环焦点
q, Alt+q (查询编辑器中)终止当前查询

菜单

keybindingdescription
j, 向下移动选择
k, 向上移动选择
g跳到列表顶端
G跳到列表底端
h, 聚焦到模式(如果有多个)
l, 聚焦到表
/过滤表
Esc清除搜索
Backspace聚焦到表
Enter when searching聚焦到表
Enter with selected schema聚焦到表
Enter with selected table预览表(100 行)
R重新加载模式和表

查询编辑器

KeybindingDescription
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向上滚动

查询历史

keybindingdescription
j, 向下移动选择
k, 向上移动选择
g跳到列表顶端
G跳到列表底端
y复制选中查询
I在编辑器中编辑选中查询
D删除所有历史记录

结果

keybindingdescription
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使用效果图

确实很是简洁。

总结一下

rainfrog总的来说,功能还是非常强大的。简单的postgresql数据库连接及操作是没有什么问题的。因为目前还没到1.0,意味着很多功能有待继续开发或增强。比如,对于双向SSL的连接方式是否支持,还真不一定。有待考证。

另外,对于使用vi比较陌生的朋友,可能学习曲线会稍长一些。毕竟那大片大片的快捷键,就需要一段时间去适应。

工具是一个好工具,是否趁手,还得看个人喜好。

我的原则就是,用自己最熟悉最快捷省时间、最顺手最不容易犯错的工具。看好rainfrog。工具箱里又多了一个备胎。

参考资料

[1]

ttps://github.com/achristmascarl/rainfrog: https://github.com/achristmascarl/rainfrog

我是【Sean】,  欢迎大家长按关注并加星公众号:数据库杂记。有好资源相送,同时为你提供及时更新。已关注的朋友,发送0、1到7,都有好资源相送。

个人微信:_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篇)

数据库杂记
数据库技术专家,PostgreSQL ACE,SAP HANA,Sybase ASE/ASA,Oracle,MySQL,SQLite各类数据库, SAP BTP云计算技术, 以及陈式太极拳教学倾情分享。出版过三本技术图书,武术6段。
 最新文章