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