PostgreSQL有许多用于处理JSON数据的函数。但是,导入JSON数据似乎很困难,因为COPY命令不支持JSON。
假设我有一个名为data.json
的文件,其中包含如下所示的JSON数据:
[
{"id":1, "name": "Jakob"},
{"id":2, "name": "Klara"}
]
是否有一种简单的方法可以使用psql导入该JSON数据文件?
答案 0 :(得分:0)
只要您正确引用,您就可以使用CSV格式导入仲裁数据。你可以用cat&引用您的CSV文件:
cat data.json | sed 's/"/""/g' | cat <(echo '"') - <(echo '"')
第一个cat命令读取文件,sed命令用两个双引号替换所有双引号,最后的cat在json之前和之后放置双引号。
让我们在服务器上创建一个表:
psql -c 'CREATE TABLE import(data jsonb)'
现在可以将此命令的结果与psql:
一起使用cat data.json | sed 's/"/""/g' | cat <(echo '"') - <(echo '"') | \
psql -c 'COPY import(data) FROM STDIN (FORMAT CSV)'