-- tworzymy nową tabelę
CREATE TABLE nowa_tabela (LIKE stara_tabela INCLUDING all);
-- usuwamy domyślną wartość dla kolumny z primary key
ALTER TABLE nowa_tabela ALTER st_id DROP DEFAULT;
-- kopiujemy zawartość starej tabeli do nowej
INSERT INTO nowa_tabela SELECT * FROM stara_tabela;
-- zmiana nazwy kolumny z primary key
ALTER TABLE nowa_tabela RENAME COLUMN st_id TO nt_id;
-- tworzymy generator kolejnych liczb - auto increment
CREATE SEQUENCE nowa_tabela_nt_id_seq;
-- ustawiamy ostatni id w generatorze
SELECT setval('nowa_tabela_nt_id_seq', (SELECT max(st_id) FROM stara_tabela), true);
-- przypisujemy kolumnie z primary key generator
ALTER TABLE nowa_tabela ALTER nt_id SET DEFAULT nextval('nowa_tabela_nt_id_seq');
-- i robimy go właścicielem tego generatora
ALTER SEQUENCE nowa_tabela_nt_id_seq OWNED BY nowa_tabela.nt_id;
Kategoria: Bazy danych
Odtwarzanie bazy postgresql z kopii zapasowej
skrypt.sh
#!/bin/bash
if ["$(whoami)" != "root"]; then
echo "Uruchom skrypt jako root!"
exit 1
fi
_DBNAME="$1"
while [ -z "$_DBNAME" ]; do
echo "Podaj nazwe bazy!"
read _DBNAME
done
_DBUSER="$2"
while [ -z "$_DBUSER" ]; do
echo "Podaj nazwe uzytkownika!"
read _DBUSER
done
_PATH="$3"
while [ -z "$_PATH" ]; do
echo "Podaj sciezke do dump\'a bazy!"
read _PATH
done
service postgresql restart
su - postgres -c "dropdb $_DBNAME"
su - postgres -c "createdb $_DBNAME -O $_DBUSER"
su - postgres -c "psql $_DBNAME < $_PATH"