Postgresql:获取jsonb列的所有最外键

Postgresql: Get all the outermost keys of a jsonb column

假设我们有一个很大的 table 和一个 jsonb 列,其中只有 json 个对象。如何获取列中所有最外层键的列表?

即如果 table 是这样的

| id | data_column                                          |
| ---| -----------------------------------------------------|
| 1  | {"key_1": "some_value", "key_2": "some_value"}       |
| 2  | {"key_3": "some_value", "key_4": "some_value"}       |
| 3  | {"key_1": "some_value", "key_4": "some_object"}      |
.....

是否有可能得到这样的结果

| keys |
| -----|
| key_1|
| key_2|
| key_3|
| key_4|

是:

SELECT jsonb_object_keys(data_column) FROM test_table;

或者,如果您想删除重复项,请排序并将键作为列名:

SELECT DISTINCT jsonb_object_keys(data_column) AS keys FROM test_table ORDER by keys;

jsonb_object_keys() / json_object_keys() returns 来自 json 对象的最外键。