172 похожих чатов

Ребят, можно ли подготавливать к перезаливке базу вот так: ``` psql -d

BASE
BASE=# drop owned by USER;
BASE=# \q
cat BASE.pgsql | psql BASE
`` `

Или могут быть последствия и надо DROP выполнять обязательно?

7 ответов

9 просмотров

Что такое "перезаливка"? Если Вам нужно загрузить базу из дампа, легче и правильнее сначала пересоздать.

Yaroslav Schekin
Что такое "перезаливка"? Если Вам нужно загрузить ...

да, загрузить дамп вместо старой, пересоздавать возможности нет. Хочется загрузить sql-дамп вместо текущих данных, но ведь они могут содержать таблицы, которых нет в дампе. Отсюда и вопрос - как бы "зачистить" все внутри базы, не дропая ее. А потом залить SQL-бекап

𝙼𝚊𝚝𝚛𝚒𝚡 𝙾𝚙𝚎𝚛𝚊𝚝𝚘𝚛
да, загрузить дамп вместо старой, пересоздавать во...

> пересоздавать возможности нет Почему? Это куда проще и надёжнее (а то может получиться неведомая смесь того, что было, с тем, что загружается). > но ведь они могут содержать таблицы, которых нет в дампе Так Вам их оставить нужно? > Отсюда и вопрос - как бы "зачистить" все внутри базы, не дропая ее. Может, вместо SQL dumps использовать какой-то другой формат, и тогда pg_restore --clean ?

Yaroslav Schekin
> пересоздавать возможности нет Почему? Это куда ...

я нашел нюанс, оставлю его здесь на случай, если кому-то пригодится: При восстановлении дампа PostgreSQL с помощью pg_restore вы обычно добавляете --clean флаг для удаления любых существующих данных из таблиц. Обратите внимание, что при этом удаляются только данные из таблиц, которые являются частью дампа, и не удаляются никакие дополнительные таблицы. Вам нужно сделать это самому: для тестовых серверов подойдет дроп схемы: DROP SCHEMA public CASCADE; CREATE SCHEMA public; GRANT ALL ON SCHEMA public TO postgres; GRANT ALL ON SCHEMA public TO public; Для прода подойдет удаление каждой таблицы по отдельности: DO $$ DECLARE r RECORD; BEGIN FOR r IN (SELECT tablename FROM pg_tables WHERE schemaname = current_schema()) LOOP EXECUTE 'DROP TABLE ' || quote_ident(r.tablename) || ' CASCADE'; END LOOP; END $$;

𝙼𝚊𝚝𝚛𝚒𝚡 𝙾𝚙𝚎𝚛𝚊𝚝𝚘𝚛
я нашел нюанс, оставлю его здесь на случай, если к...

Просто замечания: a) бывают другие схемы, и там есть много всего, кроме таблиц (хотя бы функции и т.п.) b) лучше DROP TABLE IF EXISTS в этом DO — вдруг очередная таблица уже была удалена ранее за счёт CASCADE.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта