暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

数据库杂记 2024-09-28
294

前言

昨天在群里,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、快捷键参考

通用快捷键

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篇)

文章转载自数据库杂记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论