2015-07-28 5 views
5

Как я могу импортировать только определенный столбец из таблицы в json и переименовывать их на лету? То есть:Экспорт данных из Postgres в json и переименование столбцов мухи

MyTable (id, column1, column2, columns3) 

И я хочу, чтобы экспортировать JSon их:

MyTable: {column11, column2, columns33} 

Таким образом, только 3 колонки и 2 из них будут переименованы.

ответ

7

На основе Export Postgres table as JSON вы можете выбрать нужные данные из своей таблицы, преобразовать их в JSON, а затем copy в файл. Вот SQLFiddle showing the JSON conversion.

Давайте играть с

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

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

Во-первых, получить данные в формат, который вы хотите, с меньшим количеством столбцов и любые изменения имен.

SELECT 
    name AS fruit_name, 
    quantity 
FROM data; 

Затем поместите это в подзапрос и преобразуйте его в JSON.

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

Наконец, оберните все в copy.

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

Это будет печатать каждую строку как JSON построчно в файл

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

Postgres, вероятно, может построить их в массив, прежде чем вы выводите их, но я думаю, что было бы проще постобработки файл в массив, если это тот формат, который вы хотите.

+0

Я не понимаю этого 'SELECT row_to_json (fruit_data) FROM () fruit_data;' - what's fruit_data? – imatahi

+0

Что такое '<запрос данных>'? – imatahi

+0

Что такое '' запрос JSON''? Не могли бы Вы уточнить? – imatahi

Смежные вопросы