从 Redshift 表中获取 JSON 数据

Posted

技术标签:

【中文标题】从 Redshift 表中获取 JSON 数据【英文标题】:Getting JSON Data from Redshift table 【发布时间】:2016-06-06 15:02:14 【问题描述】:

我想以 json 字符串形式从 redshift 表中检索 SQL 中的数据。有没有可以做到这一点的功能?

Postgres 有 row_to_json 函数,可以在 SQL 语句中使用,以获取 JSON 格式的数据。Redshift 中是否有类似的功能?

【问题讨论】:

【参考方案1】:

我仍在试图弄清楚如何不必列出没有复合类型或数组的每个项目,但这应该可以让您生成 json 而无需执行字符串操作。

CREATE OR REPLACE FUNCTION test_function 
  (userid int, firstname varchar, lastname varchar, email varchar)
RETURNS varchar(max) immutable as $$
    import json
    o = 
        "userid": userid,
        "firstname": firstname,
        "lastname": lastname,
        "email": email
    
    return json.dumps(o)
 $$ LANGUAGE plpythonu;

【讨论】:

【参考方案2】:

根据您想要执行的操作,您可以使用以下功能之一: http://docs.aws.amazon.com/redshift/latest/dg/json-functions.html

JSON_EXTRACT_PATH_TEXT很有用http://docs.aws.amazon.com/redshift/latest/dg/JSON_EXTRACT_PATH_TEXT.html

select json_extract_path_text('"f2":"f3":1,"f4":"f5":99,"f6":"star"','f4', 'f6');

json_extract_path_text
---------------------- 
star 

【讨论】:

这是我们拥有 Json 文本的时候。我正在寻找从 db 行数据中返回 json 的内容,与此处描述的内容一致。 hashrocket.com/blog/posts/… 我怀疑你必须手工制作 JSON。如果您通过应用程序与 Redshift 进行通信,将行转换为适合您需要的 JSON 对象应该很简单。 我不认为以“我怀疑...”开头的评论最终回答了这个问题

以上是关于从 Redshift 表中获取 JSON 数据的主要内容,如果未能解决你的问题,请参考以下文章

JSON 数据加载到 Redshift 表中

Amazon Redshift 从 JSON 获取所有密钥

Spark 2.0.0 使用 jdbc 从 Redshift 表中截断

如何使用 Redshift 从 JSON 数组列中获取值?

需要从源表中获取布尔类型列作为 varchar 并在 Amazon redshift 的目标表中存储为 varchar

从表中检索列名 -Redshift