Export a Import dát v MySQL
Určite sa niekedy stretneme s tým, že budeme potrebovať zazálohovať celú databázu alebo len potrebné tabuľky. Môžeme to spraviť jedným z naledujúcich 3 postupov:
1. MYSQLDUMP
Spustíme si príkazový riadok (Štart/Spustiť/cmd) a nastavíme sa do adresára mysql/bin, v ktorom je naša potrebná utilita pre zálohovanie MYSQLDUMP. Export má nasledujúcu syntax.
mysqldump nazov_databazy > nazov_suboru.sql
Syntax pre zálohovanie tabuľky je:mysqldump nazov_databazy nazov_tabulky > nazov_suboru.sql
Príklad:C:\mysql\bin>mysqldump databases > databases.sql
Súbor databases.sql sa nachádza v adresári bin.
Niekedy sa môžeme stretnúť aj s inou syntaxou zálohovania databáz. Záleží to od verzie mysql a mysqldump-u. Napríklad:
$ mysqldump nazov_databazy > nazov_suboru.sql
alebo
% mysqldump nazov_databazy > nazov_suboru.sql
Ak potrebujeme nápovedu k príkazu mysqldump zobrazíme si ju príkazom mysqldump --help.
Import zálohy potom bude veľmi jednoduchý. Namiesto znaku ">" sa použije opačné znamienko "<".
Syntax:C:\mysql\bin>mysqldump nazov_databazy < nazov_suboru.sql
2. phpMyAdmin
Jedná sa o administrátorský nástroj mysql. Ovláda sa cez webové rozhranie.
Export sa vykonáva nasledovne:
V phpMyAdmin sa prihlásime, vyberieme si databázu alebo tabuľku. V pravom rámci je formulár. Je možné tu zvoliť napr., či sa majú exportovať len dáta alebo aj príkazy na vytvorenie tabuľky, v akom formáte má byť súbor uložený, pod akým názvom, a ďalšie nastavenia.
Import sa vykonáva tiež veľmi jednoducho. Klikneme na meno databázy, do ktorej chceme dáta vložiť. V pravom rámci sa nám zobrazí formulár, v ktorom vieme priamo ukázať na súbor, ktorý chceme importovať.
Existujú samozrejme ďalší klienti s podobnými možnosťami, ale phpMyAdmin patrí k najrozšírenejším.
3. INFILE a OUTFILE
Vkladanie záznamov zo súboru
Existuje ešte jeden spôsob vkladania dát do tabuľky. Najprv si musíme do textového editoru vytvoriť dáta. Súbor si uložíme ako udaje.txt. Potom je potrebné už len nahrať do MySQL pomocou výrazu LOAD DATA.
LOAD DATA INFILE "nazov_suboru" INTO TABLE nazov_tabulky;
LOAD DATA INFILE vezme dáta z textového súboru a importuje ich do tabuľky. Treba sa presvedčiť, či zdrojový súbor môžu čítať všetci, teda aby mal chmod nazov_suboru 644. Existuje aj výraz LOAD DATA LOCAL. Rozdiel medzi LOCAL a INFILE spočíva v tom, že v prípade INFILE môžeme čítať zo zdrojového súboru, ale v prvom prípade čítame len z aktuálneho klienta.
LOAD DATA INFILE "udaje.txt" INTO TABLE udaje;
LOAD DATA INFILE má nepovinné argumenty:
FIELDS TERMINATED BY "nieco"znak oddeľujúci jednotlivé záznamy, väčšinou čiarka "," alebo tabulátor "\t"ENCLOSED BY "nieco"znak uzatvárajúci hodnoty záznamov, väčšinou úvodzovky '"'LINES TERMINATED BY "nieco"znak ukončujúci riadky, väčšinou odenterovanie "\n"LOW_PRIORITYMySQL bude čakať, až dotyčnú tabuľku nebude nikto čítať. Pr.:LOAD DATA LOW_PRIORITY LOCAL INFILE...
LOAD DATA LOCAL INFILE 'udaje.txt' INTO TABLE udaje FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';
Výpis záznamov do súboru
SELECT INTO OUTFILE umožňuje exportovať vybrané dáta do textového súboru.
SELECT * INTO OUTFILE 'nazov_suboru' FIELDS TERMINATED BY ';' FROM nazov_tabulky;
SELECT INTO OUTFILE má nepovinné argumenty, pomocou ktorých vieme formátovať výstup:
FIELDS ESCAPED BY "nieco"escapovanie znakov. Napríklad NULL je zapísaný ako "\N", pokiaľ je escape znakom obrátené lomítko.FIELDS ENCLOSED BY "nieco"umožňuje zvoliť znak, ktorý bude uzatvárať dáta napr. úvodzovka '"'.FIELDS OPTIONALLY ENCLOSED BY "nieco"umožňuje zvoliť znak, ktorý bude uzatvárať dáta napr. úvodzovka, ale iba textové dáta. Čísiel sa to netýka.FIELDS TERMINATED BYznak slúžiaci k oddeleniu polí, väčšinou čiarka alebo tabulátor.LINES TERMINATED BYznak slúžiaci k oddeleniu riadkov (záznamov), väčšinou odenterovanie "\n"

