Skip to content

Instantly share code, notes, and snippets.

@radimih
Created August 25, 2022 06:52
Show Gist options
  • Save radimih/e4a40ac7889bc61e6aa345f494af4668 to your computer and use it in GitHub Desktop.
Save radimih/e4a40ac7889bc61e6aa345f494af4668 to your computer and use it in GitHub Desktop.
postgresql: копирование БД под другим именем

Клонировать БД под другим именем на этом же сервере

  1. Создать дамп БД:
    pg_dump -Fc -U postgres [-h 127.0.0.1] <имя БД> > <имя БД>.backup
  2. Зайти в psql и посмотреть список БД:
    psql -U postgres [-h 127.0.0.1]
    postgres=# \l

Если БД с новым именем уже существует:

  1. Отключить возможность соединения с этой БД:
    postgres=# ALTER DATABASE <имя новой БД> allow_connections = off;
    
  2. Убить существующие коннекты к БД:
    postgres=# SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = '<имя новой БД>';
    
  3. Удалить БД:
    postgres=# DROP DATABASE <имя новой БД>;
    
  1. Выйти из psql:
    postgres=# \q
    
  2. Создать пустую БД с новым именем:
    createdb -U postgres [-h 127.0.0.1] -T template0 <имя новой БД>
  3. Восстановить БД под новым именем:
    pg_restore -U postgres [-h 127.0.0.1] -d <имя новой БД> <имя БД>.backup
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment