Копіювання данних postgres

Деколи потрібно  зробити фінт вухами.

Відновити частину данних залежно від якихось умов…. з резервної бази.

Наприклад наша база

/var/db/pgsql/data

бєкапну копію кладем

/var/db/pgsql/data2

# echo "postgresql_data=\"/var/db/pgsql/data2/\"" >> /etc/rc.conf
# /usr/local/etc/rc.d/postgresql.sh restart
#psql -h localhost -U pgsql

Робимо тимчасову таблицю згідно нашої умови.

Я так зробив, щоб можна було перевірити або підкорегувати данні.

=>CREATE TEMP TABLE foo_bar AS SELECT * FROM table WHERE <умова>;
=>\copy foo_bar to '/var/db/pgsql/copytest.csv' DELIMITERS '|' WITH NULL AS 'null' CSV quote as '"'
=>\q

Видаляємо з таблиці ‘\r’….

#tr -d '\r' < copytest.csv >copytest1.csv ; rm copytest.csv

Підключаєм стару базу, рестартуєм

#psql -h localhost -U pgsql
=>\copy client from ‘/var/db/pgsql/copytest1.csv’ DELIMITERS ‘|’ WITH NULL AS ‘null’ CSV quote as ‘”‘

Comments are closed.