Po dlhšej dobe sa opäť stretávame s MySQL, ale verte mi že od teraz to bude častejšie :) Ale teraz k veci. Dnes si ukážeme ako vyexportujeme dáta z našich databáz a tabuliek.
Najskôr si vytvoríme skúšobnú tabuľku "links", na ktorej si ukážeme všetky operácie súvisiace s exportovaním, dumpovaním a zálohovaním
tabuliek a databáz.
CREATE TABLE links1 (
cat int(11),
title varchar(40),
message varchar(150),
link varchar(100),
hits int(10)
);
Tabuľku si naplníme štandardným spôsobom nejakými údajmi:
INSERT INTO links1 (cat, title, message, link, hits) VALUES
('10', 'O1', 'Odkaz 1', 'http://prvy.odkaz.sk', '145');
Takže máme vytvorenú našu testovaciu databázu test a povedzme že dáta z databázy potrebujeme preniesť na iný lokálny stoj. Najvhodnejším
riešením v tomto prípade je vyexportovanie dát do súboru s príponou *.sql a následné naimportovanie celej databázy na iný počítač.
Vyexportovanie databázy teda prevedieme príkazom:
mysql -uuser -pheslo nazov_databazy > nazov_databazy.sql
Teda keď sa na mysql server prihlasujeme ako užívateľ 'root' s heslom 'heslo', príkaz bude vypadať nasledovne:
mysql -uroot -pheslo nazov_databazy > nazov_databazy.sql
A následný import súboru nazov_databazy.sql bude vypadať identicky:
mysql -uroot -p nazov_databazy.sql > nazov_databazy
Špeciálne navrhnutým príkazom na "vydumpovanie" databázy je príkaz mysqldump. Jeho použitie je komplexnejšie a mnohostrannejšie a taktiež sa
dá ľahko naučiť jeho pužívanie.
Na začiatok si ukážeme príkaz, ktorým si zobrazíme nápovedu k nášmu príkazu mysqldump.
mysqldump --help
Základná štruktúra použitia mysqldump je nasledovná:
Usage: mysqldump [OPTIONS] database [tables]
OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR mysqldump [OPTIONS] --all-databases [OPTIONS]
Skúsme si teda vyexportovať celú databázu 'links' do súboru 'backup_links.sql'. Toto je veľmi používaný príkaz a hlavne pri zálohovaní celej databázy sa jedná o veľmi rýchle a účinné riešenie. Urobíme to nasledovne:
mysqldump --opt links > links_backup.sql
Skúsme teraz vyexportovať všetky databázy na našom serveri. Nie je to až taká bežná požiadavka, ale občas sa hodiť môže.
mysqldump --all-databases links > all_databases.sql
Samozrejme nie je účelné aby sme sa tu zaoberali všetkými prepínačmi, ktoré sú pri tomto príkaze k dispozícii (je ich celkovo vyše 30). My si vysvetlíme a ukážeme len pár základných a tých, ktoré sú najviac používané.
Jedným z veľmi užitočných prepínočov je prepínač 'where' a umožňuje nám vyselektovať, resp. vyexportovať dáta podľa určitej podmienky (podobne ako pri SELECTe). Štruktúra je nasledovná:
mysqldump --where='where-conditions'
A prakticky by to mohlo vypadať takto:
"--where=user='john'" alebo "-wuserid>1" alebo "-wuserid<1"
Vyexportovanie viacero databáz pomocou jedného príkazu:
mysqldump --databases databaza01 [databaza02 databaza03 ...] >
moje-vyexportovane-db.sql
Predstavme si, že máme MySQL databázu pomenovanú 'db1' na serveri a chceme ju vydumpovať a preniesť na iný server s inštaláciou MySQL servera.
Urobíme to nasledovne:
shell> mysqldump --user username --password=pass --opt db1 | mysql
--user username --password=pass --host=iny_server db1
To by sme teda mali, export údajov z databázových tabuliek by sme ako tak zvládli. Ak by vás táto oblasť zaujímala viac, skúste sa pozrieť na nižšie uvedenú adresu-priamo do manuálu k MySQL k funkcii 'mysqldump'.
http://www.mysql.com/doc/m/y/mysqldump.html