Search
Write a publication
Pull to refresh

Comments 21

Показать на примерах, как работать с jsonb - это хорошо. Но вот структуру таблиц можно было бы оставить в классической, реляционной модели - Авторы, Книги, Категории. А то потом джуны всё в json будут пихать.

Меж тем, работа с json в постгресе эффективна и подлежит индексированию, если влазит в TOAST, т.е. меньше 2Кб. Ну и если json не вложенный.

Что сказать в свое оправдание..)

Я оговариваюсь "Но если данные можно нормализовать - значит надо нормализовать..." и далее по тексту. Будем надеяться, что "они" заметят")

->> - возвращает результат типа text.

Формулировка хоть и не содержит ошибок, но является неверной.

Правильно: Указанный оператор безусловно преобразует извлечённое значение к типу TEXT. Кроме того, в отличие от оператора ->, если извлечённое значение является строковым литералом, из него удаляются обрамляющие литерал двойные кавычки.

Это не то же самое, что написано в статье - ведь извлечённое значение может быть и числовым, и JSON, и предопределённой константой.

Спасибо за ваше замечание

О кавычках я пишу (прошу обратить внимание на 3-ий пример, один из запросов)

Каким бы ни было возвращаемое значение, оно все равно имеет текстовый тип

SELECT
id, info_data->>'title' as title, info_data->>'count_volumes' as cv, pg_typeof(info_data->>'count_volumes') as type_cv
FROM
books,
jsonb_array_elements(info) as info_data;

Может быть все-таки стоит оставить текст "как есть"....

Ваша статья - ваше решение. Просто читать её будут в первую очередь люди неопытные, которые запросто могут вообразить себе, что указанный оператор применим исключительно к скалярным строковым элементам. А про кавычки - пока ещё товарищ до третьего примера дочитает... да и у него может просто не совместиться. К тому же в примере весьма неудачно приходится использовать числовой индекс вместо строкового пути, и кто знает, что в итоге останется в голове у начинающего.

Спасибо. Ссылка исправлена. Очень досадно за ситуацию (ссылки проверял)

Ничего не найдено

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

отбой, открыл в инкогнито файл скачался, не работает если есть активная авторизация в яндексе

может не тот файл? почему-то думал что там будут запросы с массовой вставкой тестовых данных а не просто создание таблиц с индексами

Всё ещё хуже. Там выложен командный файл для CLI, с маловменяемым COPY public.books (id, info) FROM stdin; - непонятно, кто мешал вместо лога консоли выложить нормальный дамп.

В общем, вместо нормальных исходных данных читатель насмерть прибит к linux и psql.

да это не проблема, хочется данных готовых чтобы не вводить руками, причем не 10 строк в таблицах побольше хотябы от 100

Для данного материала методически верно иметь в исходных данных именно небольшое количество данных.

а имя файла / ссылка для какая?

"а имя файла / ссылка для какая?"

Надо переформулировать, чтобы можно было ответить

ссылка для файла дампа

Возможно надо сделать более подробное разъяснение
Я, как автор, наверное обязан использовать (насколько возможно), те средства, которые есть у всех (ничего дополнительно ставить не требуется).
Если установлен PostgreSQL, то и psql тоже есть.
То, что описано в публикации, можно выполнить не только в Linux.
Если у вас Windows, надо найти, где установлен PostgreSQL (если стандартно, то где-то там: c:\Program Files...), там же найдется и psql (где-то в папке bin, вероятно)
Действия по подготовке данных для запросов можно выполнить непосредственно из этой папки

А у меня online fiddle. Где я могу найти там psql?

Интересная ситуация)
Мне казалось, что я сделал все что "необходимо и достаточно" для практического освоения собственного материала
Готовить отдельно данные для отдельного случая - не хотел бы этого делать (прошу извинить)

Если действительно есть заинтересованность, то может быть стоит поставить PostgreSQL с его утилитами?
Это разумно (наверное самое простое)

Если не ставить PostgreSQL, то можно развернуть docker-контейнер с сервером (docker), развернуть дамп внутри контейнера и смотреть как работают запросы таким способом (заодно повод познакомиться с docker`ом, если еще не приходилось "сталкиваться")

Если и ставить сервер - "нет" и docker - "нет", напишите недостающие запросы самостоятельно (вероятно только insert`ы, все необходимое есть в файле дампа, надо сделать один шаг можно сказать).
Если и это тоже "нет", не знаю что сказать, вам действительно это (сама тема) надо?

Sign up to leave a comment.

Articles