如何在Adminer中将含JSONB字段的表转为可排序表格视图
解决Adminer中PostgreSQL JSONB字段转可排序搜索视图的问题
我来帮你搞定这个需求!你想要把嵌套在JSONB字段里的数据变成Adminer中像普通表一样能排序、搜索的列,其实创建数据库视图是最直接靠谱的方案,完全不需要依赖额外插件,用你现有的内置插件Adminer Docker镜像就能实现。
一、创建符合要求的视图
你已经找对了核心语句,我再把它明确出来,直接执行就能生成需要的视图:
CREATE VIEW PriceSummary AS select r.* from prices p cross join lateral jsonb_each(p.sub_table) as x(key, value) cross join lateral jsonb_to_record(x.value) as r( "Name" text, "Price" int, index int, "Date" date );
语句解释:
jsonb_each(p.sub_table):把你的JSONB对象拆分成键值对(比如原数据里的"0"、"1"键和对应的对象值)jsonb_to_record(x.value):将每个JSON对象转换成关系型表结构,通过指定字段名和类型,让Adminer能识别为普通列,支持排序和搜索
二、在Adminer中使用视图
创建完成后,你在Adminer左侧的数据库对象列表里就能找到PriceSummary这个视图。点击进入后,你会看到和普通表完全一样的界面:
- 列分别是
Name、Price、index、Date - 点击列名就能直接排序
- 顶部的搜索框可以针对单个字段进行搜索,和操作普通数据库表没有区别
三、验证视图数据
你可以先执行查询确认数据符合预期:
SELECT * FROM PriceSummary;
返回的结果会是结构化的表格:
| Name | Price | index | Date |
|---|---|---|---|
| CompX | 10 | 1 | 2020-01-09 |
| CompY | 20 | 1 | 2020-01-09 |
| CompX | 19 | 2 | 2020-01-10 |
关于json-column插件的说明
你提到的json-column插件主要是增强Adminer中JSON字段的显示和编辑体验(比如展开JSON结构),但它没法把JSON内部的字段转换成独立的、可排序的列。所以用视图的方案更贴合你的需求,而且不需要修改Adminer的插件配置,完美适配你用内置插件Docker镜像的场景。
内容的提问来源于stack exchange,提问作者ceharep
相关产品推荐
相关产品推荐

