Přeskočit obsah

Import Databáze

Export u dodavatele

Export databáze u dodavatele (DataLite) probíhá následujícím způsobem:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
pg_dump -p 5432 -h 127.0.0.1 \
    -Fc --schema-only \
    --username tsm_admin tsm \
    -f tsm-schema-only.custom.dump

pg_dump -p 5432 -h 127.0.0.1 \
    -Fc --exclude-table-data="*.jv_*" \
    --data-only \
    --username tsm_admin tsm \
    -f tsm-data-only.custom.dump

Zákazník dostává dva soubory:

  • tsm-schema-only.custom.dump
  • tsm-data-only.custom.dump

Export probíhá v tzv. custom formatu, zajišťuje volba -Fc.

Import u zákazníka

Import prvotní databáze provádíme ve spolupráci se zákazníkem.

Důležité je zachovat volbu -Fc (custom format).

Import se pak provádí následujícím způsobem:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
pg_restore \
  -h 127.0.0.1 \
  -p 5432 \
  -U tsm_admin \
  --disable-triggers \
  -d tsm -Fc \
  --schema-only tsm-schema-only.custom.dump

pg_restore \
  -h 127.0.0.1 \
  -p 5432 \
  -U tsm_admin \
  --disable-triggers \
  -d tsm -Fc \
  --data-only tsm-data-only.custom.dump

Databázový uživatel tsm_admin

Pod jakým uživatelem budou data do databáze importována záleží na dohodě se zákazníkem. Snažíme se dodržet zákazníkovi existující standardy.

Zde je možný scénář toho, jak připravit databázi na import dat aplikace TSM.

  • vytvoříme UŽIVATELE a DB, v prostředí psql (pod uživatelem postgres)
1
2
3
4
CREATE ROLE tsm_admin WITH CREATEROLE LOGIN PASSWORD 'tsm_admin';
CREATE DATABASE tsm ENCODING 'utf-8' LC_COLLATE 'cs_CZ.utf-8' TEMPLATE template0 OWNER='tsm_admin';
GRANT ALL ON DATABASE tsm TO tsm_admin;
ALTER USER tsm_admin WITH SUPERUSER;
Pozor na právo SUPERUSER

Uživatel tsm_admin dostává roli SUPERUSER, ta je nutná jen pro snazší import! Importuje se dvou-krokově. Nejprve se nahraje schéma, potom data. Při nahrávání dat se vypínají systémové triggery, proto je snazší nastavit oprávnění SUPERUSER pouze pro import! K následným dalším upgradům DB není nutné právo SUPERUSER.

Odebrání role SUPERUSER po importu se v prostředí psql provede následujícím příkazem:

1
ALTER USER tsm_admin WITH NOSUPERUSER;
  • připojíme se k této DB
1
psql -d tsm
  • vytvoříme schéma s extenzí PostGIS
1
2
CREATE SCHEMA AM;
CREATE EXTENSION IF NOT EXISTS postgis SCHEMA AM;
Neexistující extenze

Pokud se objeví následující chyba:

1
2
postgres=# CREATE EXTENSION IF NOT EXISTS postgis SCHEMA AM;
ERROR:  could not open extension control file "/usr/pgsql-12/share/extension/postgis.control": No such file or direktory

Je velice pravděpodobné, že není nainstalováno rozšíření PostGIS a Pgrouting. Viz. kapitola Instalace exzenzí

  • vytvoříme uživatele tsm-admin
1
2
3
CREATE ROLE tsm_admin WITH CREATEROLE LOGIN PASSWORD 'tsm_admin';
CREATE DATABASE tsm ENCODING 'utf-8' LC_COLLATE 'cs_CZ.utf-8' TEMPLATE template0 OWNER='tsm_admin';
ALTER USER tsm_admin WITH SUPERUSER;