Size: a a a

pgsql – PostgreSQL

2020 July 16

K

Kirill in pgsql – PostgreSQL
Благодарю!
источник

K

Kirill in pgsql – PostgreSQL
Подскажите а какой вариант более производительный?
источник

KV

Kirill Vasin in pgsql – PostgreSQL
А нет варианта в приложении распарсить json?
источник

K

Kirill in pgsql – PostgreSQL
дело в том что JSON формат я получаю в результате выполнения запроса в Power Query. Задача переместить данные из Экселя в БД.
источник

K

Kirill in pgsql – PostgreSQL
сейчас преобразую данные в текст и добавляю через INSERT INTO, думал с JSONом будет проще
источник

KK

Konstantin Knizhnik in pgsql – PostgreSQL
Kirill
дело в том что JSON формат я получаю в результате выполнения запроса в Power Query. Задача переместить данные из Экселя в БД.
Проще всего, как вам и предложили, создать временную таблицу с json полем, импортировать данные туда, а потом вставить оттуда с преобразованием.

Если же не хочется сохранять данные дважды, то можно опробовать преобразовывать их на лету с помощью какой-то утилиты, например с помощь такого скрипта на питоне:

import json
import csv
import sys

with open('data.json') as json_file:
   data = json.load(json_file)
csv_writer = csv.writer(sys.stdout)
for row in data:
   csv_writer.writerow(row.values())


Я не большой знаток питона, можно наверное как-то делать так, чтобы json файл не закачивался полностью в память.
источник

K

Kirill in pgsql – PostgreSQL
Не знаю насколько правильно это решение, но у меня заработал вариант
INSERT INTO my_table
SELECT * FROM json_populate_recordset (NULL :: my_table,
'[
   {
       "id": 1,
       "name": "Jimmy",
       "age": 25,
       "active": "yes"
   }
]'
);

Данные в формате JSON передаются просто как текст
источник

A

Andrey in pgsql – PostgreSQL
всем привет, есть аналитик, который создал функции, вывод такой
(4892003,1,34,2,"улица Оптиков",Санкт-Петербург,улица,"Северо-Западный федеральный округ","")
(4982985,1,12,1,"Мартыновская улица",Санкт-Петербург,улица,"Северо-Западный федеральный округ","")


а теперь вывод функций надо вывести в файл вида
4892003 1   34  2   "улица Оптиков" Санкт-Петербург улица   "Северо-Западный федеральный округ" ""
4982985 1   12    1  "Мартыновская улица" Санкт-Петербург улица   "Северо-Западный федеральный округ" ""


нужна табуляция, пробую делать так
psql -Umyuser mydb -AF $'\t' -c "select * from mytable" -o /tmp/dumpfile.txt


но вывод не меняется
источник

KK

Konstantin Knizhnik in pgsql – PostgreSQL
Andrey
всем привет, есть аналитик, который создал функции, вывод такой
(4892003,1,34,2,"улица Оптиков",Санкт-Петербург,улица,"Северо-Западный федеральный округ","")
(4982985,1,12,1,"Мартыновская улица",Санкт-Петербург,улица,"Северо-Западный федеральный округ","")


а теперь вывод функций надо вывести в файл вида
4892003 1   34  2   "улица Оптиков" Санкт-Петербург улица   "Северо-Западный федеральный округ" ""
4982985 1   12    1  "Мартыновская улица" Санкт-Петербург улица   "Северо-Западный федеральный округ" ""


нужна табуляция, пробую делать так
psql -Umyuser mydb -AF $'\t' -c "select * from mytable" -o /tmp/dumpfile.txt


но вывод не меняется
вы наверное зовёте функцию select foo()
а надо select * from foo()
источник

A

Andrey in pgsql – PostgreSQL
Konstantin Knizhnik
вы наверное зовёте функцию select foo()
а надо select * from foo()
да, вызывал select foo(), спасибо большое
источник

YB

Yelena Bunina in pgsql – PostgreSQL
привет. может поможете ускорить copy на чтение на нагруженной на запись и обновления таблице? в таблице порядка 80млн записей, весит 250Гб. я так понимаю, что тюнинг maintenance_work_mem тут совсем не поможет, как и зафорсить параллельное чтение. читаю всю таблицу полностью без фильтра, часть колонок
источник

A

Alexander in pgsql – PostgreSQL
может поднять реплику и читать с неё?
источник

YB

Yelena Bunina in pgsql – PostgreSQL
Alexander
может поднять реплику и читать с неё?
тогда долгие запросы падают с ошибкой о протухших таплах. репликация отстает. запрос идет больше часа
источник

AN

Alexander Nikitin in pgsql – PostgreSQL
А что сделать-то хотите? Зачем ускорять copy?
источник

YB

Yelena Bunina in pgsql – PostgreSQL
etl
источник

YB

Yelena Bunina in pgsql – PostgreSQL
переливаем в BigQuery через copy в stdout и пайпом в клауд
источник

YB

Yelena Bunina in pgsql – PostgreSQL
сейчас запросы идут по 5 часов для конкретных джоб. решили через BQ делать выборки. для этого туда надо каждый час делать выгрузку данных
источник

YB

Yelena Bunina in pgsql – PostgreSQL
поэтому нужна скорость copy минут 15 максимум)
источник

AN

Alexander Nikitin in pgsql – PostgreSQL
если в stdout я даже не знаю, можно ли тут ускорить, если бы в архив лили, то там можно было бы поиграть со степенями сжатия или с самой программой - поставить pigz вместо gz, а вот что делать с stdout - не подскажу
источник

YB

Yelena Bunina in pgsql – PostgreSQL
ага. BQ не заимпортить архив из постгреса
источник