Size: a a a

pgsql – PostgreSQL

2020 June 04

АК

Андрей Кисин... in pgsql – PostgreSQL
Yaroslav Schekin
Если "на поток" и нужно 100% надёжно, придётся написать что-то своё, наверное — подходящих опций pg_dump / pg_restore я что-то не вижу. :(
Есть вариант data-only pg_dump + sed... но так можно дозаменяться, т.е. заменить строку-название схемы в самих данных (хоть и с крайне низкой вероятностью). ;)

Кстати, почему бы (раз у Вас есть схема в целевой базе), не "потанцевать" с переименованиями схем?
Т.е. временно целевую переименовать под источник, потом обратно?
Можно было бы переименовать, но схема будет использоваться в продакшене и к ней все время будут обращаться.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Андрей Кисин
Можно было бы переименовать, но схема будет использоваться в продакшене и к ней все время будут обращаться.
Подождите. Вот у Вас в целевой базе есть new_schema с пустыми таблицами — она же не может использоваться, правильно?
Или там есть ещё и схема с тем же названием, как и в источнике?
источник

РЖ

Роман Жарков... in pgsql – PostgreSQL
Yaroslav Schekin
Если "на поток" и нужно 100% надёжно, придётся написать что-то своё, наверное — подходящих опций pg_dump / pg_restore я что-то не вижу. :(
Есть вариант data-only pg_dump + sed... но так можно дозаменяться, т.е. заменить строку-название схемы в самих данных (хоть и с крайне низкой вероятностью). ;)

Кстати, почему бы (раз у Вас есть схема в целевой базе), не "потанцевать" с переименованиями схем?
Т.е. временно целевую переименовать под источник, потом обратно?
Там простыми регулярками нельзя заменить в общем случае. Там и функции и их параметры. Какие-то типы данных, кажется.
Я крутил прототип dump/restore с функцией замены схемы и пока дальше прототипа это не двинулось.
источник

Ð

Ð in pgsql – PostgreSQL
когда же пг научится перезаписывать и блокировать строки таблицы по столбцам, интересно... щас по факту выходит что иногда выгоднее всего делать по отдельной таблице на каждый столбец
источник

R

Rasha in pgsql – PostgreSQL
ПРивет всем! Можно ли как то в пострегресе заселектить последние 39 строк в таблице?
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Роман Жарков
Там простыми регулярками нельзя заменить в общем случае. Там и функции и их параметры. Какие-то типы данных, кажется.
Я крутил прототип dump/restore с функцией замены схемы и пока дальше прототипа это не двинулось.
Да это ясно. Но тут вроде только данные из таблиц нужны, больше ничего.
источник

Ð

Ð in pgsql – PostgreSQL
Rasha
ПРивет всем! Можно ли как то в пострегресе заселектить последние 39 строк в таблице?
конечно, order by id desc limit 39
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Rasha
ПРивет всем! Можно ли как то в пострегресе заселектить последние 39 строк в таблице?
В таблице не бывает "последних" строк, логически.
Если нужно в каком-то порядке — "ORDER BY something DESC LIMIT X".
источник

АК

Андрей Кисин... in pgsql – PostgreSQL
Yaroslav Schekin
Подождите. Вот у Вас в целевой базе есть new_schema с пустыми таблицами — она же не может использоваться, правильно?
Или там есть ещё и схема с тем же названием, как и в источнике?
Схема с другим именем, но не пустая. Вообще возможны оба варианта, схема с тем же именем(тогда pg_dump подойдет) и с другим. Лучше все таки выгрузка в CSV наверное.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Андрей Кисин
Схема с другим именем, но не пустая. Вообще возможны оба варианта, схема с тем же именем(тогда pg_dump подойдет) и с другим. Лучше все таки выгрузка в CSV наверное.
Мне кажется, Вы не поняли вопроса. ;)
В целевой базе (на приёмнике!) есть схема с тем же названием, что в исходной (в источнике)?
источник

АК

Андрей Кисин... in pgsql – PostgreSQL
Yaroslav Schekin
Мне кажется, Вы не поняли вопроса. ;)
В целевой базе (на приёмнике!) есть схема с тем же названием, что в исходной (в источнике)?
Возможны оба варианта, нужно решение для обоих случаев(когда в целевой базе есть схема с тем же названием и когда они различаются). В данный момент тесты проходят на одной базе с разными схемами.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Андрей Кисин
Возможны оба варианта, нужно решение для обоих случаев(когда в целевой базе есть схема с тем же названием и когда они различаются). В данный момент тесты проходят на одной базе с разными схемами.
Я спрашиваю совсем не об этом (что-то я непонятно пишу). ;)

Смотрите, у Вас есть исходная база source, и целевая target.
Вы хотите скопировать данные из схемы source.source_shema в target.target_schema (тут уже есть пустые таблицы).

Если у Вас в целевой базе не существует схемы target.source_shema, можно было бы делать как-то так:
1. pg_dump --data-only -n source_shema -d source ...
2. В target database:
ALTER SCHEMA target_schema RENAME TO source_shema;
3. psql -d target -f файл_дампа ...
4. Опять в target:
ALTER SCHEMA source_shema RENAME TO target_schema;
источник

АК

Андрей Кисин... in pgsql – PostgreSQL
Yaroslav Schekin
Я спрашиваю совсем не об этом (что-то я непонятно пишу). ;)

Смотрите, у Вас есть исходная база source, и целевая target.
Вы хотите скопировать данные из схемы source.source_shema в target.target_schema (тут уже есть пустые таблицы).

Если у Вас в целевой базе не существует схемы target.source_shema, можно было бы делать как-то так:
1. pg_dump --data-only -n source_shema -d source ...
2. В target database:
ALTER SCHEMA target_schema RENAME TO source_shema;
3. psql -d target -f файл_дампа ...
4. Опять в target:
ALTER SCHEMA source_shema RENAME TO target_schema;
Спасибо, я Вас прекрасно понял, нам такой вариант не подойдёт.😊
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Андрей Кисин
Спасибо, я Вас прекрасно понял, нам такой вариант не подойдёт.😊
А, ну и ладно. ;)
Тогда да, придётся Вам реализовать эту часть функциональности pg_dump вручную, наверное...
Или же... а Вы чего-то готового на эту тему не пробовали искать?
источник

АК

Андрей Кисин... in pgsql – PostgreSQL
Yaroslav Schekin
А, ну и ладно. ;)
Тогда да, придётся Вам реализовать эту часть функциональности pg_dump вручную, наверное...
Или же... а Вы чего-то готового на эту тему не пробовали искать?
Сейчас ищу, хотелось штатными средствами.
источник

РА

Романов Александр... in pgsql – PostgreSQL
товарищи, нетривиальный  вопрос
у меня есть некий файл, который  я хочу запустить.
внутри есть как DDL команды, так и DML.

можно ли как-то не выполнять DML? на уровне команды или настройки сервера. причем так, чтобы  не ошибка  была, а просто пропускалось?

я думал убрать dml регулярками, но в внутри create or replace function  вполне законно может быть insert into. и его трогать не надо.
источник

2_

2flower _ in pgsql – PostgreSQL
можно ли как то получить все настройки current_setting() текущей транзакции?
источник

s

sexst in pgsql – PostgreSQL
Dmitry L
Некоторые ФС могут не любить когда в одном каталоге слишком много файлов
Про проблемы с количеством обращений - быстрее будет, чем через БДвинт будет менее нагружен, ИМХО
BTW, именно от этих нюансов и растут частично ноги у СУБД. Хранение миллионов мелких файлов в специализированной обёртке, чтобы ОС не загибалась при попытке доступа к ним.
источник

s

sexst in pgsql – PostgreSQL
Ð
щас винты очень быстрые как оператива
Если только nmve. И те очень смутно приближаются.
источник

s

sexst in pgsql – PostgreSQL
Victooor
Читаю https://www.sqlstyle.guide/ru/#cтолбцы. Пишут "По возможности не используйте id в качестве первичного идентификатора таблицы". Что имеется в виду, что id как primary key использовать нежелательно? Почему?
Не читал, но скорее всего имеется в виду классическое "Не плодите первичный автоинкрементный ключ бездумно везде, используйте только там, где это реально нужно".
источник