Zadání:

Pokuste najit program, ktery by umoznil lokalni pouziti programu MySQL (rucni vyplnovani tabulek a provadeni SQL prikazu). Popiste pouziti tohoto programu, uvedte priklad, jak do databaze nacist napriklad soubor, ve kterem je v kazdem radku nekolik udaju, oddelenych napriklad carkami nebo tabulatory (sloupecky tabulky). Hlavni je rozsah textu odevzdaneho dokumentu (html), ktery bych mohl vystavit na webovych strankach a rikat, ze za tohle jsem dal zapocet s takovouhle znamkou.

Vypracování:

Proč exportovat a posléze importovat data?

Asi tím nejméně příjemným důvodem je havárie SQL serveru (či serveru obecně). I sebelépe udržovaný a nakonfigurovaný server může postihnout chyba (ať již hardwarová, či softwarová) a data, která jste pracně shromaždovali, jsou rázem pryč. Každý správce serveru si pro tyto případy vytváří zálohy. Měl by proto mít zálohovaná i data z MySQL. Tato zálohovaná data pak může bez větších problémů znovu obnovit právě pomocí importu dat. Dalším častým důvodem je prostý přenos dat z jiné databáze (náš případ), která je umístěna na jiném místě a my potřebujeme provést synchronizaci dat. Vstupní data přitom mohou být dvojího druhu. Buďto se jedná o soubory CSV (data oddělená čárkami - viz. později), či o soubory, které obsahují přímo SQL příkazy. Soubor s SQL příkazy vzniká například při exportu dat z MySQL (vhodnější).
V podstatě máme 4 možnosti jak vyřešit zadaný problém:

1. Použít některého z komerčních programů
2. Použít freeware pro systémy windows
3. Použít příkazovou řádku
4. Použít opensource program phpMyAdmin


1. Komerční programy

Např. MySQL Manager o kterém si můžeme více přečíst zde
Těmito programy jsem se nezabýval, protože považuji za zbytečné za produkty řešící tento problém platit.

2. Volně dostupné programy pro systém Windows

Jedním z představitelů této skupiny je program MySQL-Front, jehož vývoj byl bohužel ukončen. Poslední verzi je možno stáhnout zde.

MySQL-Front je ideální náhradou za řádkově orientovanou utilitu mysql nebo nepříliš komfortní MySqlManager, dodávaný společně s databází. Bez problémů může nahradit i populární phpMyAdmin (viz Chip 07/02), pro jehož provoz potřebujeme nainstalované PHP a webový server (potom však máme přístup k databázi odkudkoliv). Nabízí řadu šikovných funkcí, příjemné a intuitivní grafické rozhraní, a to vše za rozumnou cenu - totiž zadarmo.

Instalace je triviální a na disku zabere necelý 1 MB. Po spuštění vás přivítá dialog, ve kterém je třeba vyplnit informace nutné pro připojení k databázovému serveru. Můžeme si je ihned uložit (možnost více profilů je samozřejmá), takže je nemusíme při opětovném spuštění programu vyplňovat znovu.
Po připojení se okno programu rozdělí na tři části. V levém sloupci se nachází stromový seznam dostupných databází, tabulek a jejich sloupců. Vedlejší hlavní okno se skládá ze záložek, jejichž počet a funkce se mění právě v závislosti na tom, která položka zmiňovaného seznamu je aktivní. Poslední, dolní část okna zobrazuje odesílané SQL příkazy, které si naklikáme v jednotlivých dialozích.

Práce s databází:
Ze zmíněných záložek jsou vždy přítomny Host a Query. První z nich zobrazuje seznam proměnných MySQL s jejich hodnotami a nalezneme zde i seznam procesů, které na serveru právě běží. Máme-li dostatečná oprávnění, můžeme vybrané procesy zabít.

Záložka Query je tu pro ty, kteří chtějí z nějakého důvodu zadávat přímo SQL příkazy. Nabízí totiž schopný editor s podporou zobrazování syntaxe, v němž můžeme napsat vlastní SQL skript. Zde se vyplatí používat (a to platí pro celý program) pravé tlačítko myši, kterým se dají vyvolat vzorové části kódu (užitečné, když si nejsme jisti správnou syntaxí příkazu). Hotový skript potom můžeme odeslat na server, přičemž výsledky se ihned zobrazují pod oknem editoru. Samozřejmě můžeme skript uložit do souboru nebo načíst už hotový soubor.

Vytvoření databáze je otázkou jednoho klepnutí myší a zadání názvu. O nic těžší není ani tvorba nebo editace tabulek. Pomocí jednoduchého dialogu lze nastavit vše potřebné - jméno a typ tabulky, názvy a datové typy sloupců, popřípadě další vlastnosti (index, not null apod.).
K práci s existujícími datovými strukturami slouží záložky:

Database - obsahuje seznam tabulek v databázi, umožňuje vymazat obsah tabulky nebo změnit její typ (ISAM, MyISAM, MERGE atd.), zkopírovat tabulku ( její strukturu i data, popř. jen jejich část), spustit nad tabulkou příkazy OPTIMIZE, REPAIR apod. Ty se však dají spustit také z okna Table-Diagnostic.
Table - zobrazuje seznam sloupců aktuální tabulky včetně jejich vlastností, umožňuje přidat nové sloupce nebo měnit vlastnosti stávajících.
Data - zobrazuje data tabulky, umožňuje vkládat nové, mazat nebo editovat starší záznamy. Pro přehledné zobrazení dat nabízí pravé tlačítko myši sadu předdefinovaných filtrů, ale můžeme si samozřejmě definovat vlastní pravidlo.

Stejně pohodlná je správa uživatelů. V okně User-Manager lze snadno vložit uživatelské jméno, heslo, jméno počítače, z něhož se uživatel může přihlásit, a samozřejmě vybrat oprávnění ke spouštění příkazů (Select, Insert, Create, Drop atd.) nad povolenou databází. Podobně existuje možnost editovat vlastnosti stávajících uživatelů.

Komunikace s okolím Silnou stránkou programu je import a export dat. Importovat data je možné přes rozhraní ODBC, ze souboru MS Access nebo z textového souboru ve formátu CSV, ale můžeme si definovat i vlastní formát uložení dat v textovém souboru. O použití SQL skriptu jsem se zmínil výše. MySQL-Front umí uložená data exportovat do formátů CSV, HTML nebo XML, přičemž si u všech lze vybrat mezi schránkou a přímým uložením do souboru.

Kromě zmíněných možností samozřejmě funguje klasický dump. Jak je zvykem, lze se omezit pouze na zkopírování struktury tabulky nebo přidat i data a výsledek uložit do souboru. To je snadný způsob zálohování celé databáze. Poslední možnost přenesení dat představuje přenos datových tabulek přímo mezi databázemi, které se ani nemusejí nacházet na stejném serveru.

Závěr Program MySQL-Front je podařený nástroj. Funkčně se zcela vyrovná programu phpMyAdmin a navíc nepotřebuje interpreter PHP ani webový server, což může někomu vyhovovat. Ocenit ho mohou zvláště programátoři internetových aplikací, kteří často potřebují vytvářet nebo měnit parametry databáze během vývoje programu, ale užitečného a schopného pomocníka v něm najdou i správci serverů. Bohužel jeho další vývoj byl v nedávno zastaven, proto jeho poslední verzi přinášíme na Chip CD v rubrice Zkuste si sami.

zdroj:www.chip.cz

3. Použití příkazové řádky

Import SQL příkazů
Uvedu příklad: Máme soubor zaloha.sql, který obsahuje SQL příkazy, a ty chceme provést - neboli promítnout obsah těchto souborů do databáze. Pro správné vykonání těchto příkazů je potřeba přesměrovat tento soubor na program mysql. To se provede následujícím způsobem:

mysql -u root -p <zaloha.sql
Import CSV souborů
Daný cvs soubor obsahuje pouze data - tedy nikoliv syntaxi pro tvorbu tabulek apod. Tato data můžeme importovat do již existující tabulky pomocí příkazu mysqlimport, který podobně jako mysqldump obsahuje řadu přepínačů. Přehled těch nejzákladnějších nalezneme v následující tabulce:

Přepínač Popis
-d Před začátkem importu odstraní všechna data z tabulky, do které bude import proveden.
-f Tento přepínač zajistí, že import bude pokračovat, i když dojde k nějaké chybě.
-h [název serveru] Nastaví název SQL serveru, kterému budeme importovat data. Standardně je nastaven localhost.
-i Zajistí, aby byly ignorovány všechny záznamy, které mají stejný jedinečný klíč.
-l Na dobu importu uzamkne všechny tabulky, do kterých se bude importovat.
-L Příkaz mysqlimport použije při importu soubor z místního počítače. Nemusí jej proto nejdříve stahovat.
-r Nahradí v tabulce záznam, jehož jedinečná hodnota se shoduje. Opak přepínač -i.
--fields-enclosed-by=znak Znak, který uzavírá data polí. Standardně mysqlimport předpokládá, že nejsou uzavřena do žádných znaků, ale většinou se setkáte s tím, že jsou uzavřena do uvozovek.
--fields-escaped-by=znak Nastaví, který znak bude používán jako znak ukončení. Mysqlimport standardně neočekává žádný znak.
--fields-terminated-by=znak Určuje znak, který bude používán jako oddělovač jednotlivých polí. Většinou je tento znak čárka, ale mysqlimport implicitně očekává tabulátor.
--lines-terminated-by=znak Znak, která ukončuje záznam. Mysqlimport očekává implicitně znak nového řádku.

Nyní tedy využijeme těchto přepínačů a sestavíme následující příkaz:
mysqlimport -u root -p --fields-enclosed-by=" -fields-terminated-by=, uzivatele.txt
K vysvětlení předcházejícího řádku. Voláme příkaz mysqlimport hned s několika přepínači. Ty první slouží k přihlášení k SQL serveru (pro import potřebujeme patřičná práva), následně pomocí přepínače -fields-enclosed-by nastavujeme, že jednotlivé záznamy budou uzavřeny do uvozovek a následný přepínač -fields-terminated-by nastavuje, jakým znakem budou od sebe oddělována jednotlivá pole. Předposlední údaj příkazu značí název databáze, do které budeme importovat data. Aby bylo patrné, do které tabulky se mají data importovat, je nutné podle příslušné tabulky pojmenovat soubor. Z tohoto příkladu je patrné, že soubor uzivatele.txt bude importován do tabulky uzivatele.
zdroj: www.zive.cz

4. Program phpmyadmin

PhpMyAdmin je nejpoužívanější webová aplikace napsaná v PHP, určená pro správu databáze MySQL přes webové rozhraní. S její pomocí si můžeme připravit velice rychle novou tabulku nebo odhalit chyby v SQL dotazech.

PhpMyAdmin je distribuován zdarma pod GNU licencí. Aktuální verze jsou již počeštěné a podporují jednak kódování win-1250 (typicky operační systémy Windows), jednak iso-2 (běžné pro OS Linux). Český jazyk rozhraní je zvolen automaticky podle jazykových preferencí v prohlížeči a pokud ne, dá se nastavit. Kódování češtiny, pokud není správně rozpoznáno, nastavíme ručně. Toto kódování by mělo být nastaveno v PhpMyAdminu stejně, jako na MySQL serveru. V opačném případě se při zobrazování výsledků dotazů české znaky nezobrazí správně, automatické překódování v MySQL je totiž problematické.

Často využívanými jsou exporty:
jen struktura tabulek, nebo jen obsah tabulek a nebo obojí. Vyberme tabulky, kterých se má export týkat. Přidej DROP TABLE znamená, že před každým CREATE TABLE tabulka (...) se nejprve zapíše DROP TABLE IF EXISTS tabulka. Tabulku můžeme exportovat ve formátu .csv buď ve standardu pro MS Excell nebo v takovém, jaký si sami zadáme. Můžeme ovlivnit i rozsah - které řádky se budou exportovat. Zaškrtnutím Pošli dojde ke stažení souboru na váš počítač, jinak se výpis zobrazí v pravém rámci. Při jejím zaškrtnutí si soubor s exportem stáhneme rovnou na lokální počítač. Jinak se objeví jako dokument v pravém rámci.



A neméně často používané importy:

Zpracoval: Miroslav HRUDŇÁK