Re: Emitting JSON to file using COPY TO
Andrew Dunstan <andrew@dunslane.net>
From: Andrew Dunstan <andrew@dunslane.net>
To: Joe Conway <mail@joeconway.com>, Maciek Sakrejda <m.sakrejda@gmail.com>
Cc: Davin Shearer <davin@apache.org>,
PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2023-12-03T13:46:28Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Add option force_array for COPY JSON FORMAT
- 4c0390ac53b7 19 (unreleased) landed
-
json format for COPY TO
- 7dadd38cda95 19 (unreleased) landed
-
introduce CopyFormat, refactor CopyFormatOptions
- a2145605ee3d 19 (unreleased) landed
-
Doc: add IDs to copy.sgml's <varlistentry> and <refsect1>
- e4018f891dec 19 (unreleased) cited
On 2023-12-02 Sa 17:43, Joe Conway wrote: > On 12/2/23 13:50, Maciek Sakrejda wrote: >> On Fri, Dec 1, 2023 at 11:32 AM Joe Conway <mail@joeconway.com> wrote: >>> 1. Is supporting JSON array format sufficient, or does it need to >>> support some other options? How flexible does the support scheme >>> need to be? >> >> "JSON Lines" is a semi-standard format [1] that's basically just >> newline-separated JSON values. (In fact, this is what >> log_destination=jsonlog gives you for Postgres logs, no?) It might be >> worthwhile to support that, too. >> >> [1]: https://jsonlines.org/ > > > Yes, I have seen examples of that associated with other databases > (MSSQL and Duckdb at least) as well. It probably makes sense to > support that format too. You can do that today, e.g. copy (select to_json(q) from table_or_query q) to stdout You can also do it as a single document as proposed here, like this: copy (select json_agg(q) from table_or_query q) to stdout The only downside to that is that it has to construct the aggregate, which could be ugly for large datasets, and that's why I'm not opposed to this patch. cheers andrew -- Andrew Dunstan EDB: https://www.enterprisedb.com