GQS DATAMIXER tool (rev. 26.5.2010)
nástroj pro obousměrný přenos
dat mezi libovolnými databázovými strukturami platforem MS SQL, MySQL, MS
Access (soubory MDB) nebo definovanými datovými oblastmi sešitů MS
Excel (soubory XLS). Umožňuje variabilní edici nebo vkládání datových
záznamů na základě speciálních instrukčních souborů ("receptur") buď v
ručně ovládaném, nebo automatickém režimu. Přenos využívá nástroje jazyka
SQL a transakční zpracování s volitelnou úrovní zabezpečení.
Nástroj je redukovanou verzí komplexní aplikace GQS DATASHAKER.
obecné informace
Základem činnosti nástroje je
připojení zdrojové a cílové datové struktury a následný přenos určených
datových záznamů nebo položek. Přenos umožňuje buď vkládání nových záznamů
nebo edici stávajících. Podmínky přenosu určuje soubor pravidel, takzvaná receptura,
tvořená "human-readable" textovým souborem s doporučenou příponou DXT
(dyXoft template). Protože mixer nepracuje s jedinou recepturou, ale s
jejich seznamem (opět "human-readable" textový soubor s doporučenou
příponou DXL - dyXoft list), lze v jediné seanci kombinovat různé přenosy
za dost komplikovaných podmínek.
Existuje-li navíc v pracovním adresáři nástroje seznam receptur s
názvem AUTORUN_LIST.DXL, zahájí aplikace provádění jednotlivých receptur
automaticky ihned po spuštění. Mixer lze tedy využívat i pro dávková
zpracování dat nezávislá na obsluze - ve spojení s vhodným spouštěcím
procesem, jakým je například plánovač úloh Windows.
podrobný popis a posloupnost činností
Po spuštění nástroj neprve hledá v pracovním adresáři výchozí seznam AUTORUN_LIST.DXL. Je-li seznam nalezen, zahájí ihned jeho zpracování (AUTO MODE); pokud tento seznam není nalezen, čeká na ruční zadání (USER MODE). V tomto případě uživatel vyhledá jiný seznam receptur pomocí standardního dialogu ovládaného tlačítkem "seznam receptur" a - poté, co program ověří správnost zadání a zobrazí počet receptur v seznamu - spustí vlastní zpracování tlačítkem "mixing".
Během mixingu nástroj zpracovává jednotlivé receptury v témže pořadí, v jakém jsou uvedeny v seznamu. V první fázi jsou načteny všechny ovladače a jejich parametry a je kontrolována správnost zadání. V další fázi se nástroj připojí ke zdrojové i cílové databázi nebo struktuře a zahájí přenos dat podle zadaných pokynů. Protože načítání a vlastní mixing probíhají odděleně, nezáleží na pořadí ovladačů v receptuře; v zájmu zachování přehlednosti receptury se ovšem doporučuje dodržovat logické uspořádání a používat komentáře.
V každé fázi přípravy i
zpracování nástroj kontroluje formální správnost zadání a v případě
zjištění jakékoliv chyby zastavuje činnost. Logickou správnost zadaných
podmínek přenosu pochopitelně kontrolovat nemůže, ale umožňuje uživateli
nastavit přenos tak, aby při jakékoliv nekorektní operaci s cílovou
datovou strukturou skončil a data se vrátila do původního stavu (ovladač ALWAYSROLLBACK) -
toto zabezpečení bohužel nelze použít při zápisu do sešitu MS Excel, který
transakční zpracování nepodporuje.
Při automatizovaných přenosech je - bez ohledu na úroveň zabezpečení -
vždy vhodné nejprve celý proces odladit na kopii dat a teprve pak zahájit
ostré přenosy.
Celý průběh zpracování seznamu je zapisován do dalšího textového souboru - logu. Pro redukci rozsahu zapisovaných dat jsou používány hexadecimální stavové kódy. V případě potřeby hlubší analýzy průběhu přenosu je možno aktivovat podrobný výpis přenosu ("dump") použitím přepínače USEDUMP; tento výpis zobrazí výsledek zpracování všech vybraných záznamů. Záznam je identifikován pořadovým číslem ve vybrané množině; identifikaci lze dále upřesnit zobrazením uživatelem zvolené položky (ovladač DUMPFIELDNAME).
výchozí nastavení
Ve výchozím nastavení používá
nástroj pracovní adresář C:\DATASHAKER, ve kterém je umístěn vlastní EXE
soubor, tento informační soubor DMHELP.HTM a log DMLOG.TXT. Výchozí
nastavení dále předpokládá existenci podadresáře DATAFILES, ve kterém by
měly být umístěny seznamy a receptury a kde je také hledán seznam
AUTORUN_LIST.DXL pro automatické spouštění. Jsou-li jednotlivé receptury
umístěny mimo tento podadresář nebo mimo adresář, ve kterém je umístěn
aplikační EXE soubor DATAMIXER.EXE, musí seznam receptur obsahovat úplnou
cestu ke každé receptuře.
Je-li soubor DATAMIXER.EXE umístěn v jiném adresáři, považuje se za
pracovní tento adresář.
Soubor receptury (DXT) smí obsahovat pouze řádky s ovladači nebo komentáře. Za komentář se považuje řádek, obsahující na první pozici středník (;). Řádek s ovladačem má tvar
[OVLADAČ]:parametr1;parametr2.. parametrN
kde levá hranatá závorka leží
opět na první pozici. Znaky CRLF v parametrech nejsou přípustné. Pro
vytváření receptur je proto vhodný jednoduchý textový editor umožňující
tvorbu dlouhých řádků hladkého textu bez zalamování (např. NOTEPAD).
Prázdné řádky receptury jsou ignorovány. Názvy položek je nutno
uvádět přesně, velká a malá písmena jsou rozlišována. Seznam ovladačů s
podrobným popisem funkce a parametrů je k dispozici
zde.
Tato část dokumentu obsahuje detailní popis všech definovaných ovladačů. Název ovladače je umístěn v hranatých závorkách na počátku řádku receptury. Je-li pro funkci ovladače nutno zadat parametry, následuje dvojtečka a seznam parametrů, oddělených středníkem. Typický vzhled řádku s ovladačem:
[OVLADAČ]:parametr1;parametr2.. parametrN
Pokud lze jednomu ovladači přiřadit různé kombinace parametrů, jsou jednotlivé varianty uvedeny na samostatných řádcích.
Je-li parametrem textový řetězec, který lze různě modifikovat, jsou při jeho popisu použity konvence obvyklé u příkazových řádků:
* nepovinná sekce řetězce je uzavřena v hranaté závorce (které mohou být vnořené)
* varianty téže sekce jsou odděleny znakem "pipe" ( | )
Příklad variabilního parametru - textového řetězce:
[OVLADAČ]:sekce1;sekce2[\sekce3 | ,sekce4[;sekce5]]
možné varianty:
[OVLADAČ]:sekce1;sekce2
[OVLADAČ]:sekce1;sekce2\sekce3
[OVLADAČ]:sekce1;sekce2,sekce4
[OVLADAČ]:sekce1;sekce2,sekce4;sekce5
Ovladače jsou popisovány v abecedním pořadí. Konkrétní příklady použití jsou uvedeny zde.
není ovladačem v pravém
smyslu - funguje hlavně jako oddělovač parametrů. Vyskytne-li se však na
první pozici řádku receptury nebo seznamu receptur, bere se tento řádek
jako komentář a je při zpracování ignorován.
Tvar zápisu:
; Toto je řádek komentáře
Použití komentářů je velmi vhodné u složitějších receptur, kde je třeba zachovat si přehled o prováděných datových operacích.
Zajistí odvolání všech
provedených změn v cílové datové struktuře, pokud dojde během přenosu dat
k jakékoliv chybě nebo nekorektní operaci.
Tvar zápisu:
[ALWAYSROLLBACK]
Ovladač nemá žádné parametry a pro zajištění funkce stačí jeho jediné uvedení v receptuře.
POZOR: je-li cílovou datovou strukturou datová oblast sešitu MS Excel, není tento ovladač funkční (MS Excel bohužel nepodporuje mnohé SQL standardy a transakční zpracování je jedním z nich).
Povinný ovladač pro SQL
cílovou strukturu. Určuje datovou kolekci (katalog), do níž se bude
zapisovat.
Tvar zápisu:
[DESTCATALOG]:jmeno_katalogu
Ovladač se uplatní pouze při zápisech do struktur SQL nebo MySQL (v kombinaci s ovladačem DESTDATASOURCE), pro zápis do jiných datových struktur nemá význam. Parametrem je textový řetězec udávající platné jméno kolekce.
POZOR:
ovladač se uplatní pouze při zápisech do databází SQL nebo MySQL.
Povinný ovladač. Určuje
cílový SQL server, soubor s databází MS Access (soubor MDB) nebo se
sešitem MS Excel (soubor XLS).
Tvary zápisu:
[DESTDATASOURCE]:jmeno_sqlserveru[\instance |,port]][;login;heslo[;portMySQL;vychozi_katalogMySQL]]
[DESTDATASOURCE]:uplna_cesta\mdb_soubor
[DESTDATASOURCE]:uplna_cesta\xls_soubor
Parametrem je textový řetězec, jehož sekce oddělené středníkem použije mixer při konstrukci řetězce ConnectString.
"Jmeno_sqlserveru" je buď platný alias v síti LAN/WAN, nebo
existující IP adresa; v případě potřeby lze tuto sekci parametru rozšířit o název instance nebo port.
Je-li cílem přenosu MySQL, použijí se (obvykle povinně) sekce "portMySQL" a "vychozi_katalogMySQL".
Při zápisech do struktur SQL se ovladač uplatní
pouze v kombinaci s ovladačem DESTCATALOG.
"Uplna_cesta" je platná a funkční cesta k souboru MDB nebo XLS ve
vztahu k pracovnímu adresáři mixeru.
POZOR: vzhledem k zabezpečení dat není vhodné uvádět v receptuře login a heslo; při zápisech do databází SQL se předpokládá přístup s využitím integrovaného zabezpečení sítě.
Povinný ovladač. Určuje
datovou tabulku nebo oblast v cílové datové struktuře.
Tvar zápisu:
[DESTTABLE]:jmeno_tabulky_nebo_oblasti
Ve strukturách SQL nebo MDB je parametrem ovladače textový řetězec definující platné jméno existující tabulky v databázi. V sešitech MS Excel je parametrem textový řetězec definující platný název pojmenované datové oblasti (doporučeno) nebo listu (je-li to nezbytné). Bližší informace o práci s pojmenovanou datovou oblastí obsahuje nápověda aplikace MS Excel.
POZOR: je-li při zápisu do sešitu MS Excel použit list, může dojít k nespecifikovaným zápisům dat nebo chybám, protože list obecně nemusí obsahovat data ve formě regulérní tabulky. Krom toho je nutno název listu pro použití v mixeru upravit (doplnit znak "$" a uzavřít celý název do hranatých závorek).
Nastavuje časový limit pro
připojení k cílové datové struktuře.
Tvar zápisu:
[DESTTIMEOUT]:pocet_sekund
Pro vzdálená připojení k
cílové databázi je někdy třeba zvýšit hodnotu povoleného časového limitu.
Parametr ovladače je číslo udávající hodnotu v sekundách.
Výchozí nastavení limitu je 60 sekund.
Povinný ovladač. Určuje použitou
platformu cílové datové struktury.
Tvar zápisu:
[DESTTYPE]:typ
"typ" je tříznakový řetězec nabývající hodnot
Jiné hodnoty nejsou zatím povoleny, nevylučuje se však rozšíření v dalších verzích datamixeru.
Určuje položku, jejíž hodnota
bude uvedena v podrobném výpisu chybových hlášení (dump), pokud je tento
výpis požadován.
Tvar zápisu:
[DUMPFIELDNAME]:nazev_polozky
Parametrem ovladače je platný název položky ze zdrojové tabulky. Jednotlivé řádky výpisu pak mají tvar
typ:hodnota_zadane_polozky [poradove_cislo_zaznamu] stavovy_kod
Není-li ovladač použit, uvede se ve výpisu pořadové číslo záznamu ve zpracovávaném výběru:
typ:poradove_cislo_zaznamu stavovy_kod
Podrobný výpis značně zvětšuje rozsah výstupního souboru a je proto ve výchozím stavu mixeru vypnutý; k jeho aktivaci je nutno použít ovladač USEDUMP.
Určuje seznam položek, podle
nichž bude nalezen editovaný záznam v cílové struktuře.
Tvar zápisu:
[EDITONFIELDS]:polozka1;polozka2; .. polozka6
Parametry ovladače jsou
platné názvy položek, vyskytujících se v cílové tabulce. Počet položek je
volitelný v rozsahu 1 až 6. Odpovídající zdrojová položka je určena
ovladačem MIXVALUE nebo - u shodných tabulek - ovladačem USEFIELDLIST.
Tento ovladač je rozhodujícím řídícím prvkem pro edici cílové
struktury. Je-li při mixingu nalezen cílový záznam, jehož hodnoty v
zadaných položkách jsou shodné s položkami zpracovávaného zdrojového
záznamu, je cílový záznam upraven podle pravidel stanovených ovladači
MIXFIELD a/nebo MIXVALUE.
POZOR:
1. položky musí být zvoleny tak, aby byla zajištěna exkluzivita
cílového záznamu (tj. cílový záznam odpovídající dané sestavě hodnot musí
být nejvýše jeden). Obvykle jsou proto použity položky s charakterem klíče
(indexu).
2. exkluzivita zdrojového záznamu se předpokládá, ale není povinná -
cílový záznam bude v případě nesplněného předpokladu přepsán hodnotami
posledního zpracovávaného zdrojového záznamu, který vyhověl podmínce.
Nastavuje omezení pro výběr
zpracovávaných záznamů ze zdrojové tabulky.
Tvar zápisu:
[FILTERSTRING]:nastaveni_filtru_vyberu_dat
Parametrem ovladače je textový řetězec, který lze interpretovat jako platný filtr pro zdrojovou tabulku. Obecně je filtr použit pro jednoduchá kritéria výběru; pro složitější omezení na vstupu mixingu je vhodnější ovladač QUERYSTRING. Při současném použití obou ovladačů se filtr zpracuje jako první.
POZOR:
1. nastavení filtru musí odpovídat podmínkám pro použití na dané
platformě.
2. je-li současně použit QUERYSTRING, může dojít ke kontradikci
(vstupním podmínkám nevyhoví žádný záznam).
Blokování zrušení přenosu
záznamu při použití ovladače USEFIELDLIST
v případě, že se liší počet položek zdrojové a cílové tabulky.
Tvar zápisu:
[IGNORELISTLENDIFF]
Ovladač brání zákazu přenosu záznamu v případě, kdy se předpokládá shoda cílové a zdrojové struktury, jenže tyto se liší v několika položkách (typicky při úpravě struktury v rámci inovace). Standardní použití ovladače USEFIELDLIST v takovém případě vygeneruje chybu.
Povinný ovladač při mixingu
datových struktur typu "master-slave". Popisuje hlavní indexy řídících a
závislých tabulek.
Tvar zápisu:
[INDEXFIELDS]:dmIndex;dsIndex;smIndex;ssIndex
Parametry ovladače jsou platné názvy indexových položek daných tabulek, kde je
Ovladač se používá v kombinaci s ovladači SLAVETABLES a SLAVELINKS.
V mnoha případech mixingu se nezpracovávají jen jednoduché záznamy, ale struktury typu "one-to-many", kde jednomu záznamu v hlavní (master) tabulce odpovídá několik záznamů v závislé (slave) tabulce. K zaručení exkluzivity se dále často používají položky typu "unique_identifier", jejichž hodnotu generuje databázový stroj. Tyto položky nelze editovat a exkluzivitu zajišťuje nekonečně rostoucí řada, takže se žádná hodnota nevyskytne dvakrát a není zaručena pravidelná relace mezi sousedními záznamy. Takto definovaná struktura klade na datový mixer značné nároky; mixing probíhá v několika kolech a musí být zaručena korektní náhrada všech indexů. Je proto nezbytné, aby měl mixer k dispozici informaci o tom, kde indexy hledat.
POZOR: tato verze mixeru nepodporuje složené indexy.
Určuje seznam položek, podle
nichž bude určena resp. ověřena exkluzivita vkládaného záznamu v cílové
struktuře.
Tvar zápisu:
[INSERTONFIELDS]:polozka1;polozka2; .. polozka6
Parametry ovladače jsou
platné názvy položek, vyskytujících se v cílové tabulce. Počet položek je
volitelný v rozsahu 1 až 6. Odpovídající zdrojová položka je určena
ovladačem MIXVALUE nebo - u shodných tabulek - ovladačem USEFIELDLIST.
Tento ovladač je rozhodujícím řídícím prvkem pro vkládání záznamů do
cílové struktury, neboť zabraňuje duplicitám a okpakovaným vkladům. Je-li
při mixingu nalezen cílový záznam, jehož hodnoty v zadaných položkách jsou
shodné s položkami zpracovávaného zdrojového záznamu, nebude zdrojový
záznam zpracován.
POZOR:
1. položky musí být zvoleny tak, aby skutečně nebylo možno vložit do
cílové struktury duplicitní záznam. Obvykle jsou proto použity položky s
charakterem klíče (indexu).
2. Exkluzivita zdrojového záznamu se předpokládá, ale není povinná -
v případě nesplněného předpokladu bude vložen pouze první zdrojový záznam,
který vyhověl podmínce.
Předepisuje způsob míchání
položek - definuje, do které cílové položky má být zapsána hodnota zadané
zdrojové položky.
Tvar zápisu:
[MIXFIELD]:cilova_polozka;zdrojova_polozka
Prvním parametrem ovladače je
platný název položky v cílové tabulce. Druhým parametrem je platný název
položky ze zdrojové tabulky.
Tento ovladač je rozhodujícím řídícím prvkem pro míchání, neboť
umožňuje přenos mezi různými položkami. Předpokládá se, že jsou obě
položky stejného datového typu, ale typová shoda není povinná; v případě
odlišnosti se zapisuje hodnota odpovídající převodu původní hodnoty přes
proměnnou typu VARIANT. Alternativním ovladačem je
MIXVALUE, který
definuje zápis konstatních hodnot zvoleného typu.
Všechny přenášené cílové položky včetně řídících (to jest uvedených
v seznamech
EDITONFIELDS
a/nebo INSERTONFIELDS)
musí být v receptuře jmenovitě uvedeny pomocí samostatných ovladačů. Je
možno definovat předpis pro maximálně 200 položek. U shodných tabulek lze
zápis zjednodušit použitím ovladače USEFIELDLIST.
POZOR: nechtěná neshoda typu může způsobit zkreslení míchaných dat.
Předepisuje způsob míchání
hodnot - definuje, do které cílové položky má být zapsána přímo zadaná
konstantní hodnota daného typu.
Tvar zápisu:
[MIXVALUE]:cilova_polozka;hodnota;typ_hodnoty
Prvním parametrem ovladače je platný název položky v cílové tabulce. Druhým parametrem je řetězec odpovídající platnému zápisu hodnoty zvoleného typu. Třetím parametrem je řetězec popisující typ vkládané hodnoty. Tato verze mixeru podporuje tyto tvary parametru:
Výsledný formát v cílové tabulce je dán její strukturou. Hodnoty se vkládají pomocí proměnné typu VARIANT.
Alternativním ovladačem je MIXFIELD,
který definuje zápis obsahu určené položky zdrojového záznamu.
Všechny přenášené cílové položky včetně řídících (to jest uvedených
v seznamech
EDITONFIELDS
a/nebo INSERTONFIELDS)
musí být v receptuře jmenovitě uvedeny pomocí samostatných ovladačů. Je
možno definovat předpis pro maximálně 200 položek. U shodných tabulek lze
zápis zjednodušit použitím ovladače USEFIELDLIST.
POZOR: nechtěná neshoda typu může způsobit zkreslení míchaných dat.
Umožňuje vložit do klauzule
WHERE příkazu SELECT podmínku založenou na porovnání zadané položky
zdrojové tabulky s obsahem seznamu hodnot; seznam je načten z externího
textového souboru.
Tvar zápisu:
[QUERYINLIST]:polozka;jmeno_souboru;typ_zpracování
Prvním parametrem ovladače je platný název položky ze zdrojové tabulky. Druhým parametrem je řetězec obsahující úplnou cestu k textovému souboru obsahujícímu seznam hodnot. Třetí parametr určuje, jak budou údaje v seznamu zpracovány: pro parametr QUOTED budou hodnoty zpracovávány jako textové (v apostrofech), pro jiný text parametru budou hodnoty zpracovávány jako číselné (bez apostrofů).
Ovladač spolupracuje s ovladači QUERYSTRING a QUERYVARDATE, ale může být použit i samostatně (v tom případě je jím vytvořená podmínka jedinou podmínkou klauzule WHERE příkazu SELECT).
Nastavuje omezení pro výběr
zpracovávaných záznamů ze zdrojové tabulky.
Tvar zápisu:
[QUERYSTRING]:strukturovany_SQL_prikaz
Parametrem ovladače je textový řetězec, který lze interpretovat jako platný SQL příkaz SELECT pro zdrojovou tabulku. Obecně je použit pro složitější kritéria výběru; pro jednodušší předpis lze použít ovladač FILTERSTRING. Při současném použití obou ovladačů se filtr zpracuje jako první.
POZOR:
1. struktura příkazu musí odpovídat podmínkám pro použití na dané
platformě. Některé funkce nebo výrazy proto nemusí fungovat a vyvolají
přerušení zpracování dané receptury (zhusta platí pro sešity MS Excel)
2. mixer zpracuje výhradně SQL příkaz typu SELECT. Řetězec
obsahující jiné příkazy (především UPDATE, INSERT, DELETE nebo DROP)
vyvolá přerušení zpracování receptury.
3. je-li současně použit FILTERSTRING, může dojít ke kontradikci
(vstupním podmínkám nevyhoví žádný záznam).
Umožňuje vložit do klauzule
WHERE příkazu SELECT podmínku založenou na zadané položce zdrojové tabulky
a na hodnotách odvozených od aktuálního data a času.
Tvar zápisu:
[QUERYVARDATE]:polozka;typ_urceni_podminky
Prvním parametrem ovladače je platný název položky ze zdrojové tabulky. Druhým parametrem je řetězec popisující typ konstrukce podmínky. Tato verze mixeru podporuje tyto tvary parametru:
Ovladač spolupracuje s ovladači QUERYSTRING a QUERYINLIST, ale může být použit i samostatně (v tom případě je jím vytvořená podmínka jedinou podmínkou klauzule WHERE příkazu SELECT).
POZOR: platforma SQL používá pro zpracování údajů typu datum a čas odlišnou výchozí hodnotu než platformy MDB/XLS. Záměna parametru může způsobit posun podmínky o dva dny vpřed nebo vzad a zkreslit tak potřebný výběr.
Povinný ovladač při mixingu
datových struktur typu "one-to-many". Určuje vazební indexy pro připojení
záznamů závislých (slave) tabulek k záznamu řídící (master) tabulky.
Tvar zápisu:
[SLAVELINKS]:dmLink;dsLink;smLink;ssLink
Parametry ovladače jsou platné názvy položek daných tabulek, kde je
Ovladač se používá v kombinaci s ovladači SLAVETABLES a INDEXFIELDS.
V mnoha případech mixingu se nezpracovávají jen jednoduché záznamy, ale struktury typu "one-to-many", kde jednomu záznamu v hlavní (master) tabulce odpovídá několik záznamů v závislé (slave) tabulce. Korektní vazbu závislých záznamů na řídící záznam zajišťuje obvykle speciální vazební položka závislé tabulky, ve které je uložen index záznamu hlavní tabulky. Pro korektní smíchání vyžaduje mixer informaci o těchto položkách jak u zdrojové, tak u cílové datové struktury.
POZOR: tato verze mixeru nepodporuje složené vazební indexy.
Povinný ovladač při mixingu
datových struktur typu "master-slave". Informuje mixer o názvech závislých
(slave) tabulek.
Tvar zápisu:
[SLAVETABLES]:cilova_slave_tabulka;zdrojova_slave_tabulka
Parametry ovladače jsou platné názvy daných tabulek.
Ovladač se používá v kombinaci s ovladači SLAVELINKS a INDEXFIELDS.
V mnoha případech mixingu se nezpracovávají jen jednoduché záznamy, ale struktury typu "one-to-many", kde jednomu záznamu v hlavní (master) tabulce odpovídá několik záznamů v závislé (slave) tabulce. Pro korektní smíchání vyžaduje mixer názvy slave tabulek. Vzhledem k tomu, že struktura "one-to-many" musí být použita jak v cílové, tak ve zdrojové databázi, obsluhuje předání těchto parametrů jediný ovladač.
Povinný ovladač pro SQL
zdrojovou strukturu. Určuje datovou kolekci (katalog), z níž se bude číst.
Tvar zápisu:
[SOURCECATALOG]:jmeno_katalogu
Ovladač se uplatní pouze při čtení ze struktur SQL a MySQL (v kombinaci s ovladačem SOURCEDATASOURCE), pro čtení z jiných datových struktur nemá význam. Parametrem je textový řetězec udávající platné jméno kolekce.
POZOR: ovladač se uplatní pouze při čtení z databází SQL mebo MySQL.
Povinný ovladač. Určuje
zdrojový SQL server, soubor s databází MS Access (soubor MDB) nebo se
sešitem MS Excel (soubor XLS).
Tvary zápisu:
[SOURCEDATASOURCE]:jmeno_sqlserveru[\instance |,port]][;login;heslo[;portMySQL;vychozi_katalogMySQL]]
[SOURCEDATASOURCE]:uplna_cesta\mdb_soubor
[SOURCEDATASOURCE]:uplna_cesta\xls_soubor
Parametrem je textový řetězec, jehož sekce oddělené středníkem použije mixer při konstrukci řetězce ConnectString.
"Jmeno_sqlserveru" je buď platný alias v síti LAN/WAN, nebo
existující IP adresa; v případě potřeby lze tuto sekci rozšířit o název instance nebo port.
Je-li zdrojem dat MySQL, použijí se (obvykle povinně) sekce "portMySQL" a "vychozi_katalogMySQL".
Při zápisech do struktur SQL se ovladač uplatní
pouze v kombinaci s ovladačem SOURCECATALOG.
"Uplna_cesta" je platná a funkční cesta k souboru MDB nebo XLS ve
vztahu k pracovnímu adresáři mixeru.
POZOR: vzhledem k zabezpečení dat není vhodné uvádět v receptuře login a heslo; při čtení z databází SQL se předpokládá přístup s využitím integrovaného zabezpečení sítě.
Povinný ovladač. Určuje
datovou tabulku nebo oblast ve zdrojové datové struktuře.
Tvar zápisu:
[SOURCETABLE]:jmeno_tabulky_nebo_oblasti
Ve strukturách SQL nebo MDB je parametrem ovladače textový řetězec definující platné jméno existující tabulky v databázi. V sešitech MS Excel je parametrem textový řetězec definující platný název pojmenované datové oblasti (doporučeno) nebo listu (je-li to nezbytné). Bližší informace o práci s pojmenovanou datovou oblastí obsahuje nápověda aplikace MS Excel.
POZOR: je-li při čtení ze sešitu MS Excel použit list, může dojít k nespecifikovaným výběrům dat nebo chybám, protože list obecně nemusí obsahovat data ve formě regulérní tabulky. Krom toho je nutno název listu pro použití v mixeru upravit (doplnit znak "$" a uzavřít celý název do hranatých závorek).
Nastavuje časový limit pro
připojení ke zdrojové datové struktuře.
Tvar zápisu:
[SOURCETIMEOUT]:pocet_sekund
Pro vzdálená připojení ke
zdrojové databázi je někdy třeba zvýšit hodnotu povoleného časového
limitu. Parametr ovladače je číslo udávající hodnotu v sekundách.
Výchozí nastavení limitu je 60 sekund.
Povinný ovladač. Určuje
použitou platformu zdrojové datové struktury.
Tvar zápisu:
[SOURCETYPE]:typ
"typ" je tříznakový řetězec nabývající hodnot
Jiné hodnoty nejsou zatím povoleny, nevylučuje se však rozšíření v dalších verzích datamixeru.
Umožňuje zadat podmínku pro
řízené spouštění receptury v daném čase.
Tvar zápisu:
[TIMETABLECONTROL]:typ_casoveho_planu;vymezovaci_retezec
Prvním parametrem ovladače je tříznakový řetězec, určující typ použitého časového plánu. Tato verze mixeru rozeznává následující plány:
Druhým parametrem ovladače je řetězec vlastního předpisu plánu. Tento řetězec používá výběrový formát umožňující kombinaci výčtu a intervalů "od-do" ve tvaru N1,N2-N3,....
V jedné receptuře lze použít až čtyři různé časové plány; míchání bude spuštěno pouze v případě, že aktuální den resp. hodina vyhovuje průniku zadaných podmínek. Příklady konkrétního nastavení jsou uvedeny zde.
Definuje seznam položek,
které nebudou použity při přenosu dat mezi shodnými tabulkami,
využívajícím seznam všech položek (pomocí ovladače USEFIELDLIST.
Tvar zápisu:
[UNUSEDFIELDS]:polozka1;polozka2..polozkaN
Pro přenos kompletních záznamů mezi tabulkami s identickou strukturou lze použít kompletní seznam položek, který je součástí výbavy tabulky. Použití tohoto seznamu povoluje použití ovladače USEFIELDLIST. Je-li třeba přenosu hodnot z některých položek kompletního seznamu zabránit, použije se ovladač UNUSEDFIELDS.
Parametrem ovladače je platný seznam položek tabulky. Ovladač může být v receptuře použit vícenásobně, celková délka seznamu je omezena na 50 položek.
Ovladač povoluje zobrazení
podrobného výpisu přenosu s vyhodnocením operace u jednotlivých záznamů
(dump).
Tvar zápisu:
[USEDUMP]
Podrobný výpis obsahuje
výsledný kód operace pro každý záznam vybraný k mixingu. Informace o
každém záznamu zaberou jeden řádek souboru výpisu, takže jde o prostorově
poměrně náročnou operaci. Ve výchozím stavu je proto tento ovladač
neaktivní.
Pro identifikaci záznamu je použito pořadové číslo záznamu ve
výběru. Je-li třeba identifikaci zpřesnit, je možno zadat vypsání
libovolně zvolené položky záznamu. K tomuto zadání slouží ovladač
DUMPFIELDNAME.
Ovladač povoluje při přenosu
dat mezi tabulkami se shodnou strukturou použití kompletního seznamu
položek, který je součástí tabulky.
Tvar zápisu:
[USEFIELDLIST]
Je-li nutno zabránit přenosu dat z některých položek, použije se ovladač UNUSEDFIELDS. Pro změnu hodnoty některé položky se použije ovladač MIXFIELD a/nebo MIXVALUE.
Je-li cílová struktura od zdrojové nepatrtně odlišná (typicky po inovaci a přidání resp. odebrání několika položek), použije se ovladač IGNORELISTLENDIFF , který zabrání chybovému hlášení o neshodě struktury a následnému zrušení přenosu dat.
Receptury umožňují pestrou škálu manipulací s daty v odlišných strukturách s přihlédnutím k vnějším podmínkám. Tato část textu pouze nabízí několik jednoduchých příkladů; skutečnou sílu nástroje ocení uživatel teprve poté, co si vytvoří a vyzkouší vlastní postupy při řešení vlastních úkolů.
(příklady jsou voleny tak, aby umožnily co nejlépe objasnit funkci jednotlivých ovladačů; modelové situace proto nemusí být příliš pravděpodpobné...).
Předpokládejme existenci
firemní SQL databáze, umístěné na serveru FSERVER v katalogu FIRMBASE.
Součástí databáze je i tabulka FB_ZAMESTNANCI obsahující souhrnné
informace o zaměstnancích. Záznamy jednotlivých zaměstnanců jsou
indexovány pomocí položky Z_INDEX, která je textová a má tvar NN999, kde
"NN" je dvouznakový symbol útvaru a "999" osobní číslo. Tabulka obsahuje
kromě jiných položek i textovou položku AKTUALNI_HODNOCENI. Položka
obsahuje stručné vyjádření vedoucího pracovníka k příslušnému zaměstnanci.
Předpokládejme dále, že jednotliví vedoucí pracovníci používají
odlišné systémy vedení pesonálních agend a že je ve firmě obvyklé převádět
hodnocení do firemní databáze čtvrtletně, vždy první středu v prvním
měsíci nového čvtrtletí. Pro zabezpečené přenosy dat je použit datamixer,
spouštěný plánovačem úloh 1x denně.
Datamixer v daném termínu aktualizuje položku AKTUALNI_ HODNOCENI
pomocí samostatné receptury pro přenos dat z počítače každého vedoucího
pracovníka. Přiklad ukazuje recepturu pro přenos dat od vedoucího
pracovníka, který používá počítač VED1 a údaje si vede v sešitě MS Excel
uloženého ve sdílené složce AGENDA. Sešit je uložen v souboru
PERSONAL.XLS, charakteristiky jsou zapsány ve formě tabulky v pojmenované
datové oblasti MI_LIDE. Tabulka obsahuje opět personální index zaměstnance
a text hodnocení, jednotlivé sloupce ale nesou název OSCISLO a TEXTHOD.
Indexy zaměstnanců útvaru řízeného tímto vedoucím pracovníkem začínají
znaky TU.
Receptura pro aktualizaci záznamů v tabulce zaměstnanců může mít například tuto podobu:
; čtvrtletní přenos hodnocení VED1 >> FIRMBASE
; sekce parametrů pro připojení
[SOURCETYPE]:XLS
[SOURCEDATASOURCE]:\\VED1\AGENDA\personal.xls
[SOURCETABLE]:MI_LIDE
[DESTTYPE]:SQL
[DESTDATASOURCE]:FSERVER
[DESTCATALOG]:FIRMBASE
[DESTTABLE]:FB_ZAMESTNANCI
; sekce parametrů pro spuštění pouze v zadané dny
; výběr 1. měsíce ve čtvrtletí
[TIMETABLECONTROL]:MOY;1,4,7,10
; výběr dne v týdnu (středy)
[TIMETABLECONTROL]:DOW;3
; omezení na první výskyt vybraného dne v měsíci
[TIMETABLECONTROL]:DWM;1
; sekce parametrů mixingu - aktualizace hodnocení
; omezení vstupu na záznamy
pracovníků útvaru (doporučeno)
[QUERYSTRING]:SELECT * FROM MI_LIDE WHERE Z_INDEX like 'TU%'
; určení odpovídajícího cílového záznamu via index
[EDITONFIELDS]:Z_INDEX
; vlastní předpis pro mixing
[MIXFIELD]:Z_INDEX;OSCISLO
[MIXFIELD]:AKTUALNI_HODNOCENI;TEXTHOD
; pojistka proti zápisu chyb
[ALWAYSROLLBACK]
Předpokládejme existenci dvou
MS Access databází DIVIZE.MDB a CENTRALA.MDB, které mají shodné struktury
a jsou umístěny v síti LAN na serverech s IP adresami 192.168.7.1 a
192.168.1.30 ve složkách EKONOMIKA. V databázích jsou mimo jiné evidovány
faktury, tvořené dvojicí tabulek - řídící (master) tabulkou FA (obsahuje
souhrnné fakturační údaje) a závislou (slave) tabulkou FAPOL (obsahuje
fakturované položky). V první dekádě každého měsíce je třeba z divize do
centrály denně zapisovat nově vystavené faktury, jejichž datum
uskutečněného zdanitelného plnění, uložené v položce DUZP, padá do
předchozího měsíce. Indexy všech tabulek jsou řešeny automaticky
generovanou položkou typu "unique_identifier" a jmenují se shodně ID.
Exkluzivitu každé faktury zajišťuje položka FAK_CIS, začínající znakem "V"
pro faktury vydané a "P" pro faktury přijaté. Vazební položka závislé
tabulky se jmenuje REFAG (více o indexování zde).
Při zápisu se nesmí přenášet položky POL1 a POL2, do položky KONCOVA_CENA
je třeba zapsat obsah položky ODHAD_CENY, do položky PORADOVE_CISLO_UCTU
je třeba vložit číselnou hodnotu 18.
Pro zabezpečené přenosy dat je použit datamixer, spouštěný
plánovačem úloh 1x denně.
Receptura pro vložení nově vydaných faktur může mít například tuto podobu:
; přenos vydaných faktur z divize do centrály
; sekce parametrů pro připojení
[SOURCETYPE]:MDB
[SOURCEDATASOURCE]:\\192.168.7.1\EKONOMIKA\divize.mdb
[SOURCETABLE]:FA
[DESTTYPE]:MDB
[DESTDATASOURCE]:\\192.168.1.30\EKONOMIKA\centrala.mdb
[DESTTABLE]:FA
; sekce parametrů pro spuštění pouze v zadané dny
; omezení na první dekádu v
měsíci
[TIMETABLECONTROL]:DOM;1-10
; sekce pro popis vazeb
[SLAVETABLES]:FAPOL;FAPOL
[SLAVELINKS]:ID;REFAG;ID;REFAG;STVNUMBER
[INDEXFIELDS]:ID;ID;ID;ID
; sekce parametrů mixingu
; omezení vstupu na faktury
vydané)
[QUERYSTRING]:SELECT * FROM FA WHERE FAK_CIS like 'V%'
; rozšíření příkazu SELECT na podmínku "DUZP"
[QUERYVARDATE]:DUZP;PREVMONTH_MDB
; definice položky určující exkluzivitu
[INSERTONFIELDS]:FAK_CIS
; použití komplexního seznamu a seznamu zakázaných položek
[USEFIELDLIST]
[UNUSEDFIELDS]:POL1;POL2
; vlastní předpis pro mixing
[MIXFIELD]:KONECNA_CENA;ODHAD_CENY
[MIXVALUE]:PORADOVE_CISLO_UCTU;18;STVNUMBER
; pojistka proti zápisu chyb
[ALWAYSROLLBACK]
Veškeré operace mixeru jsou vyhodnocovány a dokumentovány v textovém souboru - logu. Pro zmenšení objemu výstupních dat jsou hlášení kódována. Následující část textu popisuje jednotlivé kódy, použité v jednotlivých sekcích výpisu, odpovídajících fázím zpracování.
Souhrnný záznam zpracování receptury. Základní výpis má tvar
SHAKE jmeno_sablony E/I ERecCount/IRecCount rec(s) SRecCount mixed [code]
kde je
Stavový kód může nabývat následujících hodnot nebo jejich kombinací:
V průběhu mixingu jsou vypisovány ("dump") kódy vnořených operací. Pro sekce "load" a "open" je uváděn jediný souhrnný chybový kód. V případě chyb edice nebo vkladu je možno použitím ovladače USEDUMP výpis rozšířit na chybové kódy pro každý zpracovávaný záznam. Ve výchozím nastavení je záznam specifikován číslem; užítím ovladače DUMPFIELDNAME lze specifikaci upřesnit vhodně zvolenou položkou záznamu.
Příklad záznamu úspěšného mixingu - vklad 961 záznamů podle receptury TEST.DXT:
DataMixer started at 13.01.2009
17:59:37 [USER mode]
C:\DataShaker\DataFiles\testlist.dxl selected
1 template(s) added into list
end of shake
shake test.dxt: E/I 0/961 rec(s), 961 mixed [00]
end of shake
DataMixer stopped at 13.01.2009 18:02:23
DataMixer close at 13.01.2009 18:02:23
*
#
Příklad záznamu neúspěšného mixingu - nepodařilo se připojit zdrojovou strukturu:
DataMixer started at 13.01.2009
17:57:17 [USER mode]
C:\DataShaker\DataFiles\testlist.dxl selected
1 template(s) added into list
shake test.dxt: E/I 0/0 rec(s), 0 mixed [02]
dump: load 00, open 01
end of shake
DataMixer stopped at 13.01.2009 17:57:48
DataMixer close at 13.01.2009 17:57:48
*
#
GQS DATAMIXER tool je nástroj vyvinutý jako volitelné příslušenství komplexních modulárních systémů GrandMaster, MeSaQ a GQS; je zjednodušenou verzí nástroje DATASHAKER.
2009, 2010 © dyXoft, W—soft
Veškerá práva jsou chráněna příslušnými normami.
Pro další informace o produktech
GQS, možnostech získání licence na jejich užívání atd. kontaktujte dyXoft
POZOR: DATAMIXER je vysoce variabilní nástroj určený profesionálům v oblasti užívání a správy databází. Zásadně se nedoporučuje používat neověřené receptury na ostrých datech. Vzhledem ke koncepci nástroje se autoři zříkají jakékoliv zodpovědnosti za změny nebo ztráty dat, způsobené jeho nevhodným použitím.