Size: a a a

pgsql – PostgreSQL

2021 March 18

IZ

Ilia Zviagin in pgsql – PostgreSQL
John Doe
да, все так :)
Печально.
Надо писать курсор и бежать по таблице, выбрасывать плохие записи, по одной в транзакции.

Запустить на недельку работать, когда-нибудь разберёт это дело
источник

СК

Сергей Кравчук... in pgsql – PostgreSQL
nibble
ну так изнутри
содержимое файлика postgresql.conf меня интерисует
источник

n

nibble in pgsql – PostgreSQL
Сергей Кравчук
содержимое файлика postgresql.conf меня интерисует
блин а было бы хорошо знать, где этот конфиг в образе альпины
источник

JD

John Doe in pgsql – PostgreSQL
подозреваю что ограничения и проверки могут как-то помочь, но не очень понимаю как применять их к данным...
устроит любой  вариант создания чистой таблицы без мусора в IP-адресах
источник

n

nibble in pgsql – PostgreSQL
в /etc нету
источник

JD

John Doe in pgsql – PostgreSQL
Ilia Zviagin
Печально.
Надо писать курсор и бежать по таблице, выбрасывать плохие записи, по одной в транзакции.

Запустить на недельку работать, когда-нибудь разберёт это дело
то есть это реально полный скан?
источник

СК

Сергей Кравчук... in pgsql – PostgreSQL
nibble
блин а было бы хорошо знать, где этот конфиг в образе альпины
обычно по дефолту где то в
/var/lib/pgsql
а вообще должен помочь
find / -name postgresql.conf
источник

IZ

Ilia Zviagin in pgsql – PostgreSQL
John Doe
то есть это реально полный скан?
Ну да
источник

n

nibble in pgsql – PostgreSQL
Сергей Кравчук
обычно по дефолту где то в
/var/lib/pgsql
а вообще должен помочь
find / -name postgresql.conf
файнд это читерство, но попробую)
источник

n

nibble in pgsql – PostgreSQL
нашел
источник

R

Radist in pgsql – PostgreSQL
John Doe
Привет) не могу придумать как эффективно решить задачу:
есть таблица (5 млрд) с полями key varchar, value varchar,
В большинстве value лежит IP-адрес, но есть плохие данные, где там фигня вместо IP.
Вопрос: как можно эффективно убрать плохие данные, оставив value где только IP?
Пробовал выбирать с regexp (~) - очень долго
При insert в таблицу с value inet - ошибка
Может какой-то индекс нужно построить? или как-то иначе...
Вам в итоге нужно получить таблицу с value inet или просто зачистить то, что не проходит валидацию? В табличку в это время кто-то пишет?
Если нужно тип сменить, то create table xxx as select key, value::inet from таблица where value ~ регексп.
Если менять тип не надо и в неё кто-то пишет - создавайте not valid констрейнт по условию корректности адреса, затем удаляйте кривые строки и делайте validate constraint (это, вроде, можно без блокировки всей таблицы сделать). В остальных случаях тупо delete по условию. Да, медленно, но тут ничего не поделаешь.
источник

n

nibble in pgsql – PostgreSQL
grep listen /var/lib/postgresql/data/postgresql.conf
listen_addresses = '*'
источник

СК

Сергей Кравчук... in pgsql – PostgreSQL
nibble
grep listen /var/lib/postgresql/data/postgresql.conf
listen_addresses = '*'
нууу, с базой все в порядке
проблема думаю где-то между базой и клиентом
открытые порты на машине, пробросы в докере и вот это вот все
а база похоже полностью здорова
источник

AN

Alexander Nikitin in pgsql – PostgreSQL
nibble
блин а было бы хорошо знать, где этот конфиг в образе альпины
show config_file; не работает?
источник

СК

Сергей Кравчук... in pgsql – PostgreSQL
Alexander Nikitin
show config_file; не работает?
это изнутри базы, а к ней подключиться не могут )
источник

AN

Alexander Nikitin in pgsql – PostgreSQL
:)
источник

IZ

Ilia Zviagin in pgsql – PostgreSQL
Radist
Вам в итоге нужно получить таблицу с value inet или просто зачистить то, что не проходит валидацию? В табличку в это время кто-то пишет?
Если нужно тип сменить, то create table xxx as select key, value::inet from таблица where value ~ регексп.
Если менять тип не надо и в неё кто-то пишет - создавайте not valid констрейнт по условию корректности адреса, затем удаляйте кривые строки и делайте validate constraint (это, вроде, можно без блокировки всей таблицы сделать). В остальных случаях тупо delete по условию. Да, медленно, но тут ничего не поделаешь.
Не, delete не вариант.

Большая таблица
источник

R

Radist in pgsql – PostgreSQL
Ну либо делайте view и используйте вместо таблицы
источник

СК

Сергей Кравчук... in pgsql – PostgreSQL
Ilia Zviagin
Не, delete не вариант.

Большая таблица
а если с условием по id (если он есть) и через циклик ? )
источник

JD

John Doe in pgsql – PostgreSQL
Radist
Вам в итоге нужно получить таблицу с value inet или просто зачистить то, что не проходит валидацию? В табличку в это время кто-то пишет?
Если нужно тип сменить, то create table xxx as select key, value::inet from таблица where value ~ регексп.
Если менять тип не надо и в неё кто-то пишет - создавайте not valid констрейнт по условию корректности адреса, затем удаляйте кривые строки и делайте validate constraint (это, вроде, можно без блокировки всей таблицы сделать). В остальных случаях тупо delete по условию. Да, медленно, но тут ничего не поделаешь.
можно оба варианта... таблица временная, никто не пишет кроме меня
value ~ regexp - работает оооооочень долго, непредсказуемо долго
источник