Sloučení databází

Z Prirucky
Systémová příručka
System navigace.png

Administrace

Správa databáze

Správa systému

Níže uvedený popis je připraven pro schémata v Oracle databázi. Text platí i pro ostatní databázové platformy, kde je nutné výraz SCHÉMA nahradit výrazem DATABÁZE. Před vlastním použitím konzultujte problém a postup s pracovníky KS-programu !


Slučování dvou schémat do jednoho

  • Vytvořte zálohy schémat před začátkem práce a nebo vytvořte kopie schémat, na kterých bude slučování prováděno. Předpokládá se, že na obou schématech byla provedena úprava databáze jedním sestavením aplikace KS Mzdy a Personalistika a toto sestavení aplikace KS Mzdy a Personalistika bude dále používáno pro slučování.Výchozí stav by měl být následující:

Schéma č. 1: Jedna z databází ke sloučení schéma č. 2: Druhá databáze ke sloučení schéma č. 3: Cílová databáze

Přečíslování osobních čísel

  • Předpokládá se, že osobní čísla pracovníků jsou v obou schématech různá a nepřekrývají se. Pokud tomu tak není, je nutné použít rutiny na přečíslování osobních čísel.Přečíslování osobních čísel pracovníků se provede tak, že do tabulky s_hz_hodn se pomocí SQL příkazů „insert into s_hz_hodn values (unikátní_identifikátor_záznamu, 1, původní_osobní_číslo, nové_osobní_číslo);“ vloží informace podle kterých bude probíhat přečíslování osobních čísel.

Spuštění jednorázové funkce „34“ „Hromadné přečíslování“:

Menu: Systém – Jednorázové funkce. Funkce číslo 34-Hromadné přečíslování

Záložka Seznam Položek, vyberte položku „Os.číslo“

Záložka Hodnoty - Zobrazení hodnot definujících přečíslování osobních čísel:

Sys-funkce-34-hodnota.png

Záložka Načtení databázových sloupců:


Sys-funkce-34-polozky.png


Následně spusťte vlastní přečíslování v záložce Seznam položek, tlačítkem Spustit přečíslování.

Po přečíslování se zobrazí výsledky, a je zde i možnost výsledky uložit.


Rozlišování pracovníků podle původního schématu:

  • Pokud chcete nadále rozlišovat pracovníky, kteří patřili do 1. nebo 2. schématu pak pomocí SQLPlus nebo SQL promptu proveďte ve schématu 1 toto: UPDATE prac_pom SET skup_prac = '1'

Ve schématu č. 2 proveďte obdobně: UPDATE prac_pom SET skup_prac = '2'(Později po sloučení naplníte jeden z univerzálních číselníků, který rozliší, která z firem je 1 a která je 2).V případě, že tento sloupec používáte k jiným účelům, tento krok neprovádějte.

Platby:

  • Pro sloučení plateb je nutné použít následující mechanismus:SELECT max(id) from SCHEMA1.platby;UPDATE SCHEMA2.platby SET id = id + MAX_Z_PREDCHOZIHO_SELECTU;SELECT max(c_dokladu) from SCHEMA1.platby;UPDATE SCHEMA2.platby SET c_dokladu = c_dokladu + MAX_Z_PREDCHOZIHO_SELECTU;

Zkopírování obsahu tabulek:

  • Do schématu 3 zkopírujte obsah libovolného ze schématu 1 nebo 2
  • Přihlaste se aplikací do schématu č. 3
  • Menu: Systém - Správa databáze - Sdílení tabulek z externích databází(viz. kapitola 4.12).


  • Do položky "Seznam externích databází" zadejte název schématu 1 a název schématu 2 (v příkladu je zadáno SCHEMA1 a SCHEMA2, ve vašem případě se však může jednat o jiné názvy).
  • Do položky oddělovač zadejte tečku (Oracle), dvojtečku (Informix) nebo dvě tečky (Microsoft SQL server). Pro jiné databázové platformy je nutné v dokumentaci se syntaxí SQL příkazů najít způsob oddělování názvu schématu nebo databáze.
  • Následně budete v 1. sloupci "Vlastní tabulky" označovat níže uvedené tabulky a přemisťovat je myší do sloupce třetího "Kopie z externích databází". Při umístění do třetího sloupce se zobrazí okno pro upřesnění priority dat z jednotlivých schémat.
  • Způsob zpracování různých tabulek:A) Tabulky par_mzdy a tabulky se nesmí přesunovat vůbec. Musí vždy zůstat v 1. sloupci "Vlastní tabulky".B) Tabulky osoby, osoby_typ, spol_prevody, mesice se přelijí pouze z jednoho schématuC) Tabulka pichacky se přelije tak, že se zvolí „všechny záznamy“ z obou schémat.C) Ostatní tabulky se přelijí ze schématu 1 celé a k nim doplněk ze druhého schématu.

Závěr:

  • Na závěr je nutno sloučit odvody z minulých období (při zpracování dalších období již bude probíhat automaticky) v cílovém schématu č. 3:1. Vysoučtování soc. a zdr. poj z obou fireminsert into pichacky (os_cislo, cislo_pom, prac_str, kod, c_dokladu, dat_od, dat_do, dny, hodiny, sazba, castka, prizn_aut, prac_kateg, datum) select os_cislo, cislo_pom, prac_str, -1 * kod, c_dokladu, dat_od, dat_do, dny, hodiny, sazba, sum(castka), prizn_aut, prac_kateg, datumfrom pichackywhere kod in (998, 999)and os_cislo = 0group by os_cislo, cislo_pom, prac_str, kod, c_dokladu, dat_od, dat_do, dny, hodiny, sazba, prizn_aut, prac_kateg, datum;2. Promazání původních hodnot:delete from pichacky where os_cislo = 0 and kod in (998, 999);3. Uložení nových vysoučtovaných záznamů:update pichacky set kod = -1 * kod where os_cislo = 0 and kod in (-998, -999);

Sloučení většího počtu schémat

Podle výše uvedeného popisu slučte dvě schémata. Pak výsledné schéma slučte se třetím schématem. Pokud je schémat ještě víc pokračujte stejným způsobem, tj. ke sloučenému schématu přidávejte vždy jedno další.