当前位置: 首页 > 知识库问答 >
问题:

如何从json表中创建包含多列的新表

黎征
2023-03-14

我有一个充满json对象的表。只有一列“数据”。

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

例如,

现在我的桌子是这样的:

但我希望它是这样的:

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

我可以试试跑步:

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

但由于我的json对象有数百列,这可能效率低下。有没有更有效的方法?感谢您的帮助或建议。

共有1个答案

幸越泽
2023-03-14

也许这条路更简单?

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;
 类似资料:
  • 我有一个数据框架,我想从其中一列的列表中创建5列 示例: 请注意,这里很少有列表少于5列,对于这些列,请在该位置插入NAN。

  • 有没有人知道如何创建包含某个类的对象列表的Avro架构? 我希望我生成的类如下所示: 为此,我写了模式文件的一部分,但不知道如何告诉Avro创建< code>Children类型的对象列表? 我的模式文件如下所示: 现在的问题是,我可以将字段级标记为类型或数组,但不知道如何将其标记为? 有人能帮忙吗?

  • 我有个名单 我需要用java生成一组列表,如下所示 以下是我目前的代码 输出 预期

  • 问题内容: 我们创建为: 我们如何用Java 创建一个? 问题答案: 或使用泛型(Java 7或更高版本) 或带有泛型(旧的Java版本)

  • 问题内容: 我正在尝试让Akka进入我的Java项目,并且我挂了一个Scala的Seq类型的小问题。我可以将ActorRef的Java列表转换为scala.collection.Seq,但是我要使用的Akka API需要一个scala.collection.immutable.Seq。我该怎么做? 码: 问题答案: 您可以使用到Java转换为斯卡拉,其中有一个方法和斯卡拉是一个。

  • 所以基本上我想创建一个包含csv文件的表