pspg是一款专为数据库查询结果设计的Unix终端分页器,采用C语言编写,完美替代传统的less分页器。它支持PostgreSQL、MySQL、SQLite等多种数据库客户端,提供冻结行列、列排序、丰富主题和鼠标交互等强大功能。轻量高效、跨平台兼容,让终端下的数据浏览体验焕然一新,是每一位数据库开发者必备的高效工具。
适用人群:数据库管理员和DBA,需要频繁在终端查看SQL查询结果;后端开发工程师,日常进行数据库调试和数据分析;DevOps工程师和系统管理员,处理日志和CSV数据的终端用户
适用场景:作为psql、mysql等数据库客户端的默认分页器,美观呈现查询结果;浏览CSV和TSV格式的数据文件,支持大文件快速定位和筛选;集成到pgcli、usql等现代化数据库CLI工具中,提升数据浏览效率
推荐理由:pspg解决了终端数据浏览的核心痛点,将简陋的文本分页升级为专业级表格浏览器。它体积小巧、性能卓越,同时支持多种数据库客户端和丰富的主题定制。对于经常与数据库打交道的开发者而言,pspg是那种用过就再也回不去的效率利器,值得立即部署到工作环境中。
项目定位与背景
在日常的数据库开发和运维工作中,我们几乎每天都要与psql、mysql等命令行客户端打交道。当查询返回大量数据时,系统默认调用的less分页器就显得力不从心了——它只能机械地滚动文本,根本无法理解表格数据的结构。pspg正是为解决这一痛点而生的:它是一款专门为表格数据设计的Unix分页器,最初服务于PostgreSQL生态,如今已扩展支持MySQL、SQLite、MonetDB等多个数据库系统,成为终端数据浏览领域的一颗明珠。
核心功能与技术架构
pspg的核心功能围绕数据浏览的实用性展开。首先是冻结行列功能,用户可以固定前N行或前N列,确保在浏览大型表格时表头或关键列始终可见,这在使用宽表时尤为实用。其次是列排序能力,用户可以指定某一列进行升序或降序排列,快速定位最大值、最小值或特定记录。程序还内置了多达十余种视觉主题,包括经典的mcview风格、现代的FoxPro风格、以及针对低亮度环境优化的绿色主题,用户可以根据个人喜好和终端环境自由切换。
技术层面,pspg采用C语言开发,依赖轻量级的ncurses库,这使其具备了极佳的启动速度和内存效率。程序支持鼠标操作,点击即可定位光标、选中单元格范围,还能将选中的数据直接复制到系统剪贴板。这些细节的打磨体现了作者对终端用户习惯的深刻理解。
创新点与亮点
与通用分页器相比,pspg最大的创新在于它的场景专精。less和more是通用文本分页器,对表格数据没有任何特殊处理;而pspg从设计之初就瞄准了数据库查询结果的展示需求,两者在产品定位上有着本质区别。
另一个亮点是广泛的客户端支持。pspg不仅可以作为psql的Pager使用,还能无缝集成到mysql命令行客户端、sqlite3、pgcli、usql、Trino(原Presto SQL)、nushell等工具中。这种“一处配置、全局生效”的设计,极大降低了用户的迁移成本。
此外,pspg对CSV和TSV文件的支持也值得关注。当你在终端中用cat或less查看一个大型CSV文件时,数据杂乱无章难以阅读;而用pspg打开同样的文件,表格结构立刻清晰可见,支持的搜索和排序功能让数据分析工作事半功倍。
与同类项目对比
在终端分页器市场上,pspg的主要竞争对手包括vimpager和most等。vimpager依托Vim强大的文本处理能力,功能不可谓不强大,但配置复杂、启动较慢,对于只需浏览数据的简单场景显得过于笨重。most支持多窗口分屏,但表格处理能力有限。pspg则在专业性和易用性之间找到了绝佳平衡点:功能足够强大(冻结、排序、选区复制),同时保持极简的使用方式——只需设置一个环境变量即可启用。
从性能角度审视,C语言实现的pspg启动时间通常在毫秒级,内存占用稳定在几MB以内,这对于频繁调用分页器的日常使用场景非常重要。
上手指南或快速开始
安装pspg非常简单。在Debian/Ubuntu系统上,一行sudo apt-get install pspg即可完成;在RedHat/Fedora系发行版,使用sudo dnf install pspg;macOS用户通过brew install pspg安装;Windows用户则可在WSL2环境中享受与Linux相同的安装体验。
启用pager只需设置环境变量。以psql为例,在shell配置文件中添加:
export PSQL_PAGER='pspg'
如果希望退出时清除屏幕内容并使用黑白主题,可以使用:
export PSQL_PAGER='pspg -X -b'
其中-X参数表示清屏模式,-b指定黑白主题。pspg还支持通过~/.pspgconf配置文件进行持久化配置,方便用户定义默认行为。程序内置了详细的--help文档,所有命令行选项都有清晰说明。
总结与展望
pspg以其精准的产品定位、扎实的技术实现和出色的用户体验,在终端数据浏览这一细分领域建立了良好的口碑。它不追求大而全的功能堆砌,而是专注于“让表格数据在终端中更易读”这一核心价值,用C语言的效率换取用户的使用愉悦感。
对于任何需要频繁在终端环境下查看数据库结果的开发者或DBA,强烈建议将pspg纳入日常工具链。轻量的资源占用、广泛的数据库支持、丰富的视觉主题以及流畅的交互体验,这些特质共同构成了一个值得推荐的高质量开源工具。项目的Star数和社区活跃度也证明了其在开源社区的认可度,未来有望在更多CLI工具中看到pspg的身影。
项目信息
| 项目名称 | okbob/pspg |
| 编程语言 | C |
| Star 数 | 2730 |
| Fork 数 | 89 |
| 主题标签 | c, csv-viewer, dbcli, monetdb-client, mysql, mysql-client, ncurses, nushell, pager, postgres-pager, postgresql, postgresql-client, psql, terminal, terminal-app, terminal-pager, tui |