如何使用psql将JSON数据导入PostgreSQL?

时间:2017-02-26 14:04:30

标签: json postgresql psql

PostgreSQL有许多用于处理JSON数据的函数。但是,导入JSON数据似乎很困难,因为COPY命令不支持JSON。

假设我有一个名为data.json的文件,其中包含如下所示的JSON数据:

[
  {"id":1, "name": "Jakob"},
  {"id":2, "name": "Klara"}
]

是否有一种简单的方法可以使用psql导入该JSON数据文件?

1 个答案:

答案 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)'