例如,
表样本
id name
1 abc
2 def
我知道在sql server中,有一个名为“ select * from sample For JSON auto”的东西来获取记录并以json格式输出。 redshift中有类似的东西吗?
示例输出:
[{'id':'1','name':'abc'},{'id':'2','name':'def'}]
答案 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
-- 有许多可用版本。