将数据从Postgres导出到json并重命名fly的列

ima*_*ahi 9 postgresql json

如何从json中的表中仅导入某些列并动态重命名?那是:

MyTable (id, column1, column2, columns3)
Run Code Online (Sandbox Code Playgroud)

我想将它们导出为json:

MyTable: {column11, column2, columns33}
Run Code Online (Sandbox Code Playgroud)

因此,只重命名了3列和2列.

Kri*_*ján 16

Export Postgres表的基础上构建为JSON,您可以从表中选择所需的数据,将其转换为JSON,然后将copy其转换为文件.这是一个显示JSON转换SQLFiddle.

让我们玩吧

CREATE TABLE data (id integer, name varchar(255), quantity integer);

INSERT INTO data VALUES 
  (1, 'apple', 10),
  (2, 'banana', 20),
  (3, 'cherry', 30)
;
Run Code Online (Sandbox Code Playgroud)

首先,使用更少的列和任何名称更改将数据转换为所需的格式.

SELECT
  name AS fruit_name,
  quantity
FROM data;
Run Code Online (Sandbox Code Playgroud)

然后,将其放在子查询中并将其转换为JSON.

SELECT row_to_json(fruit_data) FROM (
  SELECT
    name AS fruit_name,
    quantity
  FROM data
) fruit_data;
Run Code Online (Sandbox Code Playgroud)

最后,将所有内容包装好copy.

COPY (
  SELECT row_to_json(fruit_data) FROM (
    SELECT
      name AS fruit_name,
      quantity
    FROM data
  ) fruit_data
) TO 'a.file';
Run Code Online (Sandbox Code Playgroud)

这会将每行作为JSON逐行打印到文件中

{"fruit_name":"apple","quantity":10}
{"fruit_name":"banana","quantity":20}
{"fruit_name":"cherry","quantity":30}
Run Code Online (Sandbox Code Playgroud)

Postgres可能会在输出它们之前将它们构建成一个数组,但我认为如果这是你想要的格式,将文件后处理成数组会更简单.

  • 谢谢。您是通过“ a.file”来表示“ a.json”吗? (2认同)
  • 当然,你喜欢什么就给它起什么名字。请记住,每一行都是有效的 JSON,但除非您将其括在方括号中并添加逗号以获取真正的 JSON 数组,否则整个文件将无法解析。 (2认同)