Skripty a příkazy pro extrahování dat z xml souborů do MySQL (SQL) databáze.
Obsah tohoto repozitáře slouží ke zpracování exportu otevřených dat ze systému ARES. Export tvoří archiv s přibližně milionem XML souborů. PHP skriptem lze soubory postupně zpracovat do (My)SQL databáze.
Podobným projektem je ARES open data, který používá Python a primární cíl je (zřejmě) CSV.
Je potřeba vytvořit databázi dle příslušného schématu (soubor ares.sql).
SQL schéma není přesným ekvivalentem XSD, v těchto ohledech:
- nejsou ukládány nenalezené záznamy
- není explicitně ukládáno pořadí (lze řadit podle primárních, automaticky generovaných klíčů)
- položky typu textové pole (obsahují pouze subelementy typu Text) jsou zjednodušeny na vícenásobné (nezanořené) položky
Je potřeba stáhnout Výstup pro všechna IČO (cca 450 MB, po rozbalení cca 5-7 GB).
V PHP skriptu lze nastavit zdrojovou a cílovou složku - zpracované soubory jsou přesouvány (lze snadno upravit pro okamžité mazání).
Skript lze spouštět přes web, obsahuje tag meta refresh pro automatické obnovování. Nebo například z příkazové řádky.
Při kopírování do databáze nedochází k normalizaci dat, tzn. opakující se hodnoty jsou vloženy vícekrát (tak, jak jsou obsaženy v XML souborech).
Typy polí nejsou zcela optimální (např. varchar(255) všude tam, kde není pevně daná délka).
V adresách se nachází velké množství chyb - obsah položek číslo orientační, popisné, evidenční, ulice a obec jsou zpřeházené a různě kombinované.
Pole kód státu (zřejmě ISO 3166-1 numeric) ne vždy koresponduje s adresou sídla.
Některá pole nejsou vyplněna u žádných řádků (např. data narození a rodná čísla - dle platné legislativy), dále právní forma, skrytý údaj u adresy ad.
U několika IČ soubory XML obsahují, že subjekt nebyl nalezen (webové rozhrazení ARES některé z nich najde - tučně). V první verzi balíku to byla tato: 06678173, 06719937, 06719945, 06719953, 06719961, 06719988, 06772331, 06775420, 06825745, 27964400, 66521378, 68399871
Včetně těchto nenalezených IČ balík obsahuje všechna IČ ze Seznamu IČO k Balíku.
Jedná se o počty hlášené MySQL, v první verzi balíku (bez aplikovaných změn), nenormalizovaná data.
tabulka | počet řádků |
---|---|
balik_AdresaTyp | 5978488 |
balik_AdresaTyp_skrytyUdaj | 0 |
balik_CinnostiTyp | 828846 |
balik_CinnostiTyp_DoplnkovaCinnost | 8273 |
balik_CinnostiTyp_PredmetCinnosti | 134580 |
balik_CinnostiTyp_PredmetPodnikani | 1463827 |
balik_CinnostiTyp_Ucel | 125674 |
balik_ClenstviTyp | 1088815 |
balik_FunkceTyp | 3511327 |
balik_FyzickaOsobaTyp | 4731766 |
balik_PravniFormaTyp | 0 |
balik_PravnickaOsobaTyp | 204126 |
balik_UdajTypuAngazma | 677833 |
balik_UdajTypuAngazmaClenstvi | 4952734 |
balik_UdajTypuAngazmaClenstvi_skrytyUdaj | 6051 |
balik_UdajTypuStatutar | 1059696 |
balik_UvodTyp | 978641 |
balik_VypisVrEo | 978641 |
balik_ZakladniUdajeVr | 978641 |
balik_ZakladniUdajeVr_DuvodVymazu | 88074 |
balik_ZpusobJednaniTyp | 1093413 |
balik_vazba_AdresaTyp_skrytyUdaj | 0 |
balik_vazba_CinnostiTyp_DoplnkovaCinnost | 8273 |
balik_vazba_CinnostiTyp_PredmetCinnosti | 134580 |
balik_vazba_CinnostiTyp_PredmetPodnikani | 1463827 |
balik_vazba_CinnostiTyp_Ucel | 125674 |
balik_vazba_PravnickaOsobaTyp_UdajTypuAngazmaClenstvi | 15447 |
balik_vazba_UdajTypuAngazmaClenstvi_skrytyUdaj | 6051 |
balik_vazba_UdajTypuAngazma_UdajTypuAngazmaClenstvi | 1187106 |
balik_vazba_UdajTypuStatutar_UdajTypuAngazmaClenstvi | 3750181 |
balik_vazba_UdajTypuStatutar_ZpusobJednaniTyp | 1093413 |
balik_vazba_VypisVrEo_UdajTypuAngazma | 677833 |
balik_vazba_VypisVrEo_UdajTypuStatutar | 1059696 |
balik_vazba_ZakladniUdajeVr_DuvodVymazu | 88074 |
Velikost výsledné MySQL databáze s InnoDB engine je cca 2,3 GB.