PostGIS / Poznámky k administraci
Z FreeGIS portál
< PostGIS
Stránka shromažďuje poznámky ohledne administrace PostGIS.
Poznámky k administraci databáze zde.
Cluster upgrade
Poznámky k upgrade cluster pro PostgreSQL zde.
- pg_dumpall_pgis.sh
#!/bin/sh
list=`psql -c "SELECT datname FROM pg_database WHERE datistemplate = false;" -t`
for db in $list; do
echo $db
pg_dump -Fc -b -v -f $db.dump $db
done
exit 0
- pg_restore_pgis.sh
#!/bin/sh
pgis=0
if test -n "$1" ; then
pgis="$1"
fi
for file in *.dump; do
db=${file%.dump}
echo "$file -> $db"
psql -c"drop database $db"
psql -c"create database $db"
if [ $pgis -gt 0 ] ; then
echo "-> PostGIS"
psql -d $db -c "CREATE EXTENSION postgis;"
fi
if [ $pgis -gt 1 ] ; then
echo "-> PostGIS Raster"
psql -d $db -c "CREATE EXTENSION postgis_raster;"
fi
if [ $pgis -gt 2 ] ; then
echo "-> PostGIS Topology"
psql -d $db -c "CREATE EXTENSION postgis_topology;";
fi
if [ $pgis -gt 3 ] ; then
echo "-> PostGIS Routing"
psql $db -f /usr/share/pgrouting/routing_core.sql
psql $db -f /usr/share/pgrouting/routing_core_wrappers.sql
psql $db -f /usr/share/pgrouting/routing_topology.sql
fi
if [ $pgis -gt 0 ] ; then
/usr/share/postgresql/9.1/contrib/postgis-2.0/postgis_restore.pl $file | psql -d $db
else
pg_restore -Fc -d $db $file
fi
done
exit 0
Kopírovat data mezi databázemi
Příklad kopírování dat definovaných schématem mezi různými databázemi.
pg_dump -Fc -b -v -f gis1.dump -n gis1 pgis_student pg_restore -Fc -d pgis_uzpd gis1.dump
Doporučené nastavení PostgreSQL
shared_buffers = 128MB (default is 24MB) temp_buffers = 32MB (default is 8MB) work_mem = 8MB (default is 1MB) maintenance_work_mem = 32MB (default is 16MB) max_stack_depth = 4MB (default is 2MB) checkpoint_segments = 24 (default is 3)
Poznámka pro Debian:
cp /etc/sysctl.conf /etc/sysctl.conf-orig sh -c 'echo "#\n# For postgres\nkernel.shmmax = 150000000" >> /etc/sysctl.conf' sysctl -p
Aktualizace PostGIS
Viz manual.
select postgis_lib_version();
→
2.2.0dev
ALTER EXTENSION postgis UPDATE TO "2.2.0dev";
Ukázka skriptu:
#!/bin/sh
DB=$1
VERSION=$2
if test -z "$2"; then
echo "usage: $0 DB VERSION"
exit 1
fi
if test -n "$3"; then
PGPATH=$3
psql -d $DB -f $PGPATH/postgis_upgrade_20_minor.sql
psql -d $DB -f $PGPATH/rtpostgis_upgrade_20_minor.sql
psql -d $DB -f $PGPATH/topology_upgrade_20_minor.sql
else
psql -d $DB -c "ALTER EXTENSION postgis UPDATE TO \"$VERSION\";"
psql -d $DB -c "ALTER EXTENSION postgis_topology UPDATE TO \"$VERSION\";"
fi
exit 0
Vytvoření PostGIS databáze v PostgreSQL menší než 9.1
createdb <databáze> createlang plpgsql <databáze> psql -d <databáze> -f cesta/k/postgis.sql psql -d <databáze> -f cesta/k/spatial_ref_sys.sql
Příklad založení PostGIS databáze (Bash skript):
export DB=template_postgis
export PGPATH=/usr/share/postgresql/8.4/contrib/postgis-2.0/
createdb $DB
createlang plpgsql $DB
psql -d $DB -f $PGPATH/postgis.sql
psql -d $DB -f $PGPATH/spatial_ref_sys.sql
# volitene PostGIS Raster
psql -d $DB -f $PGPATH/rtpostgis.sql
# volitene PostGIS Topology
psql -d $DB -f $PGPATH/topology.sql
Poznámka: Pro nahrání dávky postgis.sql jsou vyžadována práva "superuživatele" (superuser) databázového systému PostgreSQL.