在adminer中将json表视为(可排序)表
我在数据库表中有一个jsonb
字段,我希望能够将其保存为管理员中的视图,以便我可以像标准数据库表一样快速搜索和排序字段。
我想知道json列管理员插件是否有帮助,但我不知道如何使用它。
我正在使用管理员docker映像,我相信它已经内置了插件。
如果我有这样一个数据库(有人为了上一个问题把这把小提琴放在一起)
CREATE TABLE prices( sub_table JSONB );
INSERT INTO prices VALUES
('{ "0": {"Name": "CompX", "Price": 10, "index": 1, "Date": "2020-01-09T00:00:00.000Z"},
"1": {"Name": "CompY", "Price": 20, "index": 1, "Date": "2020-01-09T00:00:00.000Z"},
"2": {"Name": "CompX", "Price": 19, "index": 2, "Date": "2020-01-10T00:00:00.000Z"}
}');
和查看表的子集
SELECT j.value
FROM prices p
CROSS JOIN jsonb_each(sub_table) AS j(e)
WHERE (j.value -> 'Name')::text = '"CompX"'
我想在Adminer中查看下表
| Date | Name | Price | index |
| ------------------------ | ----- | ----- | ----- |
| 2020-01-09T00:00:00.000Z | CompX | 10 | 1 |
| 2020-01-10T00:00:00.000Z | CompX | 19 | 2 |
| | | | |
与之相反:
| value |
| ------------------------------------------------------------ |
| {"Date": "2020-01-09T00:00:00.000Z", "Name": "CompX", "Price": 10, "index": 1} |
| {"Date": "2020-01-09T00:00:00.000Z", "Name": "CompX", "Price": 10, "index": 1} |
编辑-建立在一匹没有名字的马的答案上。以下内容保存了具有适当列的视图,然后可以在Adminer中以与标准表相同的方式进行搜索/排序。
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)
json列
adminer插件将在某种程度上完成这项工作,因为它将更好地显示json值。
这里是一个最小的docker组合。yml
创建postgres conatiner并将管理员链接到它。要在管理员容器中安装插件,可以使用环境变量adminer\u plugins
,如下所示:
version: '3'
services:
db:
image: postgres
restart: always
environment:
POSTGRES_PASSWORD: example
adminer:
image: adminer
restart: always
environment:
- ADMINER_PLUGINS=json-column tables-filter tinymce
ports:
- 9999:8080
在localhost:9999
访问管理员Web UI。使用用户名: postgres,密码:示例连接到postgres数据库。
当您编辑包含JSON列的表时,它将显示如下:
没有可用的自动转换,但您可以将JSON值转换为记录,以使显示更容易:
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)
where r."Name" = 'CompX'
在线示例
我已经成功地实现了一个google可视化表,并通过添加events listener为一列添加了自定义排序过程。 背景:数据来自数据库以呈现表。我有几个表列带有“Status”列。此列应根据不显示该表的另一个数据字段进行排序。(所有数据都来自数据库,只需一次查询。它们都运行良好。)在addListener中,我根据自己的需求对从数据库中获取的数组进行排序,并通过
问题内容: 我正在尝试使用排序对象列表 但是,如果任何列表项包含而不是, 然后我得到一个 在Py2中,这不是问题。如何在Py3中处理此问题? 问题答案: 排序比较运算符约在Python 3种严格,如描述在这里: 当操作数没有有意义的自然顺序时,顺序比较运算符(<,<=,> =,>)会引发TypeError异常。 Python 2在任何字符串(甚至是空字符串)之前进行排序: 在Python 3中,任
我想在pematon/adminer定制包中使用tables filter插件。 Tables过滤器可以与普通管理员配合使用。 问题:在pematon/adminer-自定义表-过滤器不显示在屏幕上。 我一直在查看源代码,试图找到可能排除或隐藏它的内容。我找不到是什么阻止了它的出现。 有人可以建议我如何在pematon/adminer自定义中启用表过滤器吗? 管理员自定义 管理员原件 表过滤器插件
如何将按排序顺序转换为而不更改()?我们希望保留和。 将2,3,1添加到将其排序为1,2,3。从创建一个将具有2,3,1的顺序。中的和方法也将具有2,3,1的顺序。我猜这与的实现有关。
问题内容: 我正在尝试对从JSON源填充的数据表进行排序。我的代码如下: HTML: JS: 小提琴:http : //jsfiddle.net/7czsM/1/ 如您所见,我试图将click函数添加到表标题中,以调用对数据进行排序的函数,但是它不起作用。 我已经在这里看到了这种方法的示例,该示例可以起作用:http : //jsfiddle.net/vojtajina/js64b/14/,但是当
我正在做一个项目,所以我把我的问题简化为: 任何帮助都将不胜感激。