将表格数据从redshift转换为json-选择查询以json格式获取记录

时间:2019-05-17 13:04:18

标签: sql json amazon-redshift

例如,

表样本

id name
1  abc
2  def

我知道在sql server中,有一个名为“ select * from sample For JSON auto”的东西来获取记录并以json格式输出。 redshift中有类似的东西吗?

示例输出:

[{'id':'1','name':'abc'},{'id':'2','name':'def'}]

1 个答案:

答案 0 :(得分:1)

这样的事情怎么样?这是通过使用 postgres cli psql 输出到 csv,然后使用 python 内置的 csv 和 json 库来解析它来实现的。

pql --csv -c 'select 1 as a, 2 as b union all select 3 as a,4 as b'|python3 -c 'import csv; import sys; import json; s=sys.stdin; d=csv.DictReader(s.readlines()); print(json.dumps(list(d)))'|jq

输出:

[
  {
    "a": "1",
    "b": "2"
  },
  {
    "a": "3",
    "b": "4"
  }
]

pql 这里是我使用的 zsh 别名,仅此而已:

pql () {
    local PSWD=$(cat <password file here>)
    local DSN="redshift DSN ... password=${PSWD} ..."
    psql "${DSN}" "$@"
}

先决条件:

此外,您还需要 jq,大多数软件包管理器都可以安装它,如果在 MacOS 上则可以 brew。

Python -- 该示例使用 Python 3。

PSQL——Postgres 的 cli 前端,可由大多数包管理器安装。例如,在 Mac 上,使用 HomeBrew 是 brew install Postgres@12 -- 有许多可用版本。