602SQL-Úplná dokumentace Index  

Nástroje pro export dat z databáze do XML souboru

Transformaci dat z databáze do podoby souboru ve formátu XML definuje zobrazení DAD. Toto zobrazení je obvykle uloženo jako objekt v databázi označený jménem. Některá rozhraní umožňují automatické vytvoření standardního DAD nebo přímé předání dynamicky vytvořeného DAD, bez jeho uložení do databáze.

Vzniklý XML dokument může být buď zapsán do souboru, nebo do operační paměti, anebo vrácen jak tělo odpovědi na HTTP požadavek GET.

Export do souboru

Export dat z databáze přímo do souboru v XML provádí:

Export do paměti

Export dat z databáze do proměnné v operační paměti provádí:

Vzniklý XML text v klientské proměnné bude ukončen nulovým znakem.

Export přes web XML rozhraní

Je-li zapnuto web XML rozhraní, export lze vyvolat pomocí metody GET v HTTP(S) protokolu. Zobrazení dat v databázi na data v XML souboru může definovat DAD uložený v databázi. Alternativně lze exportovat data z odpovědi na dotaz v implicitním (standardním) XML formátu.

Export podle DAD

Export definovaný DAD se vyvolá požadavkem s URL v tomto tvaru:

http[s]://<host_name>[:<port_number>]/[<path>/]602.php/<server_name>/<schema_name>/DAD/<dad_object_name>[?<parameters>]
dad_object_name je jméno DAD uloženého na serveru server_name ve schématu schema_name. XML dokument bude vrácen jak tělo odpovědi na tento požadavek.

Export standardního XML

Standardní XML soubor pro odpověď na dotaz má tuto strukturu:

  1. element na nejvyšší úrovni se jmenuje root;
  2. element root obsahuje výskyt elementu row pro každý řádek v odpovědi na dotaz;
  3. každý element row obsahuje jeden element pro každý sloupec odpovědi na dotaz, jméno tohoto elementu je totožné se jménem sloupce (nepovolené znaky jsou nahrazeny podtržítkem), text uvnitř elementu je hodnota sloupce převedena na řetězec znaků.

Export odpovědi na dotaz se vyvolá požadavkem s URL v tomto tvaru:

http[s]://<host_name>[:<port_number>]/[<path>/]602.php/<server_name>/<schema_name>/QUERYDATA/<query>[?<parameters>]
query je dotaz v jazyce SQL vyhodnotitelný ve schématu schema_name na serveru server_name.

Parametrizace exportu

Parametrizace slouží především k výběru dat, která se mají exportovat. Parametry lze však použít ve všech SQL výrazech, které se vyčíslují při exportu.

Parametry použité v DAD a v dotazu jsou identifikátory uvozené dvojtečkou. Hodnoty parametrů se předávají těmito způsoby:

Použití parametrů v dotazech a výrazech musí být v souladu s jejich typy. V klientském prostředí je typ parametru určen při jeho předání exportní funkci. Na serveru jsou typy parametru určeny v jejich deklaraci. Ve web XML rozhraní jsou všechny parametry typu řetězec znaků.

Pokud DAD je navržen jak "syntetický", tedy exportuje data z odpovědi na jeden dotaz, pak výběr dat pro export lze alternativně provést tak, že se dotaz položí předem a exportní funkci se předá otevřený kurzor. Tuto cestu umožňují

Prohlížení XML exportu ve webovém prohlížeči.

Většina webových prohlížečů umí zobrazit XML data tak, že zdůrazní strukturu XML souboru. Tato forma je vhodná pro kontrolu exportu, ale obvykle se nehodí pro prezentaci dat uživateli.

Transformaci XML dat do čitelného HTML formátu zajišťují tzv. style sheety (obvykle ve formátu XSLT). Při návrhu DAD lze definovat odkaz na style sheet, který se pak použije např. pro zobrazení dat.

Při testovacím exportu dat z odpovědi na dotaz nebo tabulky přes web XML rozhraní bez specifikovaného DAD nelze zadat odkaz na style sheet. Lze však nechat v XML dokumentu vytvořit odkaz na implicitní style sheet, který zobrazí data ve formě jednoduché tabulky. K tomu použijte URL:

http[s]://<host_name>[:<port_number>]/[<path>/]602.php/<server_name>/<schema_name>/SHOWQUERY/<query>[?<parameters>]
Jako query zadejte buď platný výraz SELECT nebo výraz TABLE <tabulka_nebo_pevný_dotaz>.

Příklad:

Správce si chce přes internetový prohlížeč podívat na poslední zápisy v základním logu SQL serveru:

https://firma.example.cz/602.php/firemni/_sysext/!SHOWQUERY/SELECT log_message FROM _iv_recent_log WHERE Log_name='' ORDER BY seq_num DESC LIMIT 50

Pokud má připravený pevný dotaz jménem Last_log následujícího tvaru:

SELECT log_message FROM _iv_recent_log
WHERE Log_name='' ORDER BY seq_num DESC
LIMIT CAST(:num AS INT)
může použít kratší zápis:
https://firma.example.cz/602.php/firemni/_sysext/!SHOWQUERY/TABLE Last_log?num=50
a parametrem num určovat kolik záznamů se zobrazí. V dotazu musí být explicitní převod hodnoty parametru na potřebný typ, protože z web XML rozhraní je typ vždy řetězec. Vykřičník před SHOWQUERY vynutí autentifikaci uživatele.

Odkaz na samostatný style sheet

Style sheet může být uložen také jako objekt v databázi. V tomto případě odkaz na style sheet má tvar:

http[s]://<host_name>[:<port_number>]/[<path>/]602.php/<server_name>/<schema_name>/STYLESHEET/<object_name>
object_name je jméno objektu style sheet uloženého na serveru server_name ve schématu schema_name.

Odkaz na implicitní style sheet z předchozího odstavce má tvar:

http[s]://<host_name>[:<port_number>]/[<path>/]602.php/<server_name>/<schema_name>/STYLESHEET/*