[英]Is there an automated way to split a JSON(B) column into multiple columns in PostgreSQL?
所以我有一個 PostgreSQL (TimescaleDB) 表,看起來像這樣:
╔════════════════════════════╦═══════╦═══════╗
║ tags ║ time ║ value ║
╠════════════════════════════╬═══════╬═══════╣
║ {"a": "test", "c": "test"} ║ 10:24 ║ 123 ║
║ {"b": "test", "c": "test"} ║ 10:25 ║ 110 ║
║ {"b": "test"} ║ 10:26 ║ 130 ║
╚════════════════════════════╩═══════╩═══════╝
我想將 JSON(B) 列拆分為多個列,如下所示:
╔════════╦════════╦════════╦═══════╦═══════╗
║ a ║ b ║ c ║ time ║ value ║
╠════════╬════════╬════════╬═══════╬═══════╣
║ "test" ║ ║ "test" ║ 10:24 ║ 123 ║
║ ║ "test" ║ "test" ║ 10:25 ║ 110 ║
║ ║ "test" ║ ║ 10:26 ║ 130 ║
╚════════╩════════╩════════╩═══════╩═══════╝
沒有辦法讓這個動態。 解析語句時,數據庫必須知道查詢的所有列的數量(和類型),早在實際執行之前很久。
如果您始終具有相同的結構,則可以創建一個類型:
create type tag_type as (a text, b text, c text);
然后使用jsonb_populate_record()
select (jsonb_populate_record(null::tag_type, tags)).*, time, value
from the_table;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.