-- 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: PostgreSQL
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"