【问题标题】:How to create new table with multiple columns from json table如何从json表中创建具有多列的新表
【发布时间】:2021-07-04 14:08:57
【问题描述】:

我有一张表,里面装满了 json 对象。只有一列“数据”。

我想将此表转换为一个包含 json 对象中所有键的多列的表。

例如,

现在我的桌子是这样的:

data
{'key1': 'value1', 'key2': 'value2'}
{'key1': 'value3', 'key2': 'value4'}

但我想要这样:

key1 key2
value1 value2
value3 value4

我不是试图以这种方式查询它,我想以我上面显示的格式完全创建一个新表。

我可以试试跑步:

INSERT INTO new_table 
SELECT data -> 'key1', data -> 'key2' 
FROM old_table

但由于我的 json 对象有数百列,这可能效率低下。有没有更有效的方法来做到这一点?感谢您提供任何帮助或建议。

【问题讨论】:

    标签: postgresql


    【解决方案1】:

    也许这种方式更简单?

    select t.*
    from yourtable
    cross join json_to_record(jsoncol) t(key1 text,key2 text,key3 text,...);
    

    再想一想,如果您已经有一个与 json 中的列匹配的表,您可以这样做:

    create table newTable (key1 text, key2 text , ...);
    
    select t.*
    from yourtable
    cross join json_populate_record(null::newTable,jsoncol) t;
    

    【讨论】:

    • 此命令会导致内存不足错误,例如,当我限制为 1000 时,它不会向新表添加任何内容。 select count(*) 返回 0 行。我确实有一个包含所有列的新表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-13
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-03
    • 1970-01-01
    相关资源
    最近更新 更多