2015-07-28 10 views

risposta

7

A partire da Export Postgres table as JSON, è possibile selezionare i dati desiderati dalla tabella, convertirli in JSON e quindi copy in un file. Ecco uno SQLFiddle showing the JSON conversion.

Giochiamo con

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

INSERT INTO data VALUES 
    (1, 'apple', 10), 
    (2, 'banana', 20), 
    (3, 'cherry', 30) 
; 

In primo luogo, ottenere i dati nel formato che si desidera, con un minor numero di colonne e le eventuali modifiche di nome.

SELECT 
    name AS fruit_name, 
    quantity 
FROM data; 

Poi, mettere questo in una sottoquery e convertirlo in JSON.

SELECT row_to_json(fruit_data) FROM (
    SELECT 
    name AS fruit_name, 
    quantity 
    FROM data 
) fruit_data; 

Infine, avvolgere tutto in copy.

COPY (
    SELECT row_to_json(fruit_data) FROM (
    SELECT 
     name AS fruit_name, 
     quantity 
    FROM data 
) fruit_data 
) TO 'a.file'; 

Questo stamperà ogni riga come linea di JSON per riga al file

{"fruit_name":"apple","quantity":10} 
{"fruit_name":"banana","quantity":20} 
{"fruit_name":"cherry","quantity":30} 

Postgres probabilmente può costruire questi in un array prima di uscita, ma penso che sarebbe più semplice da postelaborare il file in un array se questo è il formato che desideri.

+0

Non capisco questo 'SELECT row_to_json (fruit_data) FROM () fruit_data;' - cosa è fruit_data? – imatahi

+0

Cosa significa ""? – imatahi

+0

Cosa c'è ''? Potresti essere più specifico? – imatahi

Problemi correlati