Size: a a a

pgsql – PostgreSQL

2021 March 10

AT

Andrey Tatarnikov in pgsql – PostgreSQL
о, мне не просто так не кажется, мне доподлинно известно сколько это будет стоить в ресурсах :)
в общем-то, это и есть причина по которой строю join like :)
источник

AT

Andrey Tatarnikov in pgsql – PostgreSQL
Yaroslav Schekin
И да, даже если бы это было там исходно — там что, "магические" алгоритмы поиска?
Вам же нужны (хоть и ограниченные, но) регулярные выражения, а не FTS.
тут, кстати, еще не решил
в общем случае да, any (%) нужен, но может удастся отделаться position(), все равно оптимизаций нет ни под одно из них, вроде
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Andrey Tatarnikov
тут, кстати, еще не решил
в общем случае да, any (%) нужен, но может удастся отделаться position(), все равно оптимизаций нет ни под одно из них, вроде
К примеру:
LIKE '_b_c%d_e%_f_'

Можно замучиться "отделываться position()". ;)
Если Вам на самом деле нужен не LIKE, а что-то ещё более примитивное — другое дело.
источник

AT

Andrey Tatarnikov in pgsql – PostgreSQL
ладно, скормил на вход 20М строк, на все про все 8 секунд включая накладные расходы на протягивание результатов в приложение, кажется join like не такой и отвратительный
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Andrey Tatarnikov
ладно, скормил на вход 20М строк, на все про все 8 секунд включая накладные расходы на протягивание результатов в приложение, кажется join like не такой и отвратительный
Кстати, LIKE в принципе может быть ускорен (если "повезёт" с pattern) триграммным индексом, в отличие от position (не говоря уже о том, что по выразительности оно куда слабее LIKE, см. пример выше, хотя бы).
источник

AT

Andrey Tatarnikov in pgsql – PostgreSQL
pg_trgm? почитаю, спасибо
источник

IZ

Ilya Zakharov in pgsql – PostgreSQL
Михаил Шурутов
Ну так сначала распаковать этот тар-архив, а потом уже смотреть, вот что он распаковался, и далее - по ситуации. Хотя выше вон сказали, чтобы не маялись, а восстанавливали так, как создавали дамп - с помощью пгадмина.
Нашёл проблему, она оказалась в разных версиях дампа. Сам дамп 1.4 версия, а на серваке pg_resore не поддерживает эту версию 🤷🏽‍♂️
источник

SA

Sultonbek Akhmedov 🇺... in pgsql – PostgreSQL
доброго времени суток, ребята
вопрос:
вылезает ошибка:
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 25-30: ordinal not in range(256)
переходили с одного сервака на другой
бд вроде в кодировке utf-8
создавал так:
CREATE DATABASE "forge" WITH OWNER "postgres" ENCODING 'utf8' LC_COLLATE = 'en_US.utf8' LC_CTYPE = 'en_US.utf8' TEMPLATE = template0;
источник

SA

Sultonbek Akhmedov 🇺... in pgsql – PostgreSQL
или это происходит при выводе в stdout...
источник

DS

Daniella Starchenko in pgsql – PostgreSQL
Привет. Я выбираю из pg_tables названия нужных мне таблиц. Как можно сделать селект из этих таблиц? Приведите пример запроса в виде SELECT tablename from Pg_tables и тут дальше мне нужно tablename передать в слудующий селект. Как сделать?
источник

VY

Victor Yegorov in pgsql – PostgreSQL
Daniella Starchenko
Привет. Я выбираю из pg_tables названия нужных мне таблиц. Как можно сделать селект из этих таблиц? Приведите пример запроса в виде SELECT tablename from Pg_tables и тут дальше мне нужно tablename передать в слудующий селект. Как сделать?
это динамические запросы: функции, процедуры, DO в районе EXECUTE.
также можно через \gexec в нативном psql клиенте
источник

VY

Victor Yegorov in pgsql – PostgreSQL
Sultonbek Akhmedov 🇺🇿
доброго времени суток, ребята
вопрос:
вылезает ошибка:
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 25-30: ordinal not in range(256)
переходили с одного сервака на другой
бд вроде в кодировке utf-8
создавал так:
CREATE DATABASE "forge" WITH OWNER "postgres" ENCODING 'utf8' LC_COLLATE = 'en_US.utf8' LC_CTYPE = 'en_US.utf8' TEMPLATE = template0;
какая утилита/команда выдёт такую ошибку?
источник

SA

Sultonbek Akhmedov 🇺... in pgsql – PostgreSQL
Victor Yegorov
какая утилита/команда выдёт такую ошибку?
спасибо, я понял, это была ошибка при выводе сообщения в консоль, консоль была в кодировке Latin-1, а выводилось сообщение с кириллицей
источник

SA

Sultonbek Akhmedov 🇺... in pgsql – PostgreSQL
Victor Yegorov
какая утилита/команда выдёт такую ошибку?
сделал так:
export LC_ALL=en_US.UTF-8
export LANG="$LC_ALL"
источник

VY

Victor Yegorov in pgsql – PostgreSQL
Sultonbek Akhmedov 🇺🇿
сделал так:
export LC_ALL=en_US.UTF-8
export LANG="$LC_ALL"
лучше LANG выставлять как дефолт. при необходимости заменять отдельны LC_* параметры. я LC_ALL не пользуюсь
источник

SA

Sultonbek Akhmedov 🇺... in pgsql – PostgreSQL
спасибо за консультацию!
я в линуксе профан, просто сделал как нагуглил 😊
источник

SA

Sultonbek Akhmedov 🇺... in pgsql – PostgreSQL
Victor Yegorov
лучше LANG выставлять как дефолт. при необходимости заменять отдельны LC_* параметры. я LC_ALL не пользуюсь
это нужно только на время проверки, на сами проги и их результаты не оказывает влияния, поэтому глубоко не копал 😊
источник

YZ

Yuriy Zykin in pgsql – PostgreSQL
Подскажите, как восстанавливать дамп, с указанием БД? У меня все в postgres восстанавливается, хотя указано же, в geo...
sudo su postgres -c psql geo < /home/servername/geo.dump
источник

ДТ

Денис Тырышкин... in pgsql – PostgreSQL
Всем привет, я только изучаю  postgeSQL.  Гуглил, но что-то не могу понять как это сделать.
Задача у меня такая.
Нужно взять из таблицы две колонки A и B  со всеми строчками,  и дальше создать новую колонку С в которой будет значение по условию: Если А равно 1 или 0, то брать значение из колонки А , а если и любое другое значение, то брать из колонки В и записывать это в колонку С. И так для каждой строчки. Если кто-то сможет подсказть будет очень хорошо.
На python помощью pandas это так быстро решается, а вот как написать запрос на SQL не пойму.
источник

CA

Cedo Alteram in pgsql – PostgreSQL
Денис Тырышкин
Всем привет, я только изучаю  postgeSQL.  Гуглил, но что-то не могу понять как это сделать.
Задача у меня такая.
Нужно взять из таблицы две колонки A и B  со всеми строчками,  и дальше создать новую колонку С в которой будет значение по условию: Если А равно 1 или 0, то брать значение из колонки А , а если и любое другое значение, то брать из колонки В и записывать это в колонку С. И так для каждой строчки. Если кто-то сможет подсказть будет очень хорошо.
На python помощью pandas это так быстро решается, а вот как написать запрос на SQL не пойму.
эээ, создавать прямо в этой таблице?
источник