4. diel - MySQL krok za krokom - Export
V minulej lekcii, MySQL krok za krokom - Vkladanie a mazanie dát v tabuľke, sme si ukázali, ako vložiť záznamy do databázovej tabuľky a ako ich mazať.
V tomto MySQL tutoriále si ukážeme, ako exportovať dáta našej databázy. Vytvorenie zálohy sa nám bude iste mnohokrát hodiť či už pre prípadné obnovenie našich dát alebo ich zdieľanie s ostatnými.
Typy exportov
Export, alebo aj záloha, je súbor s SQL príkazmi. Ten môžeme využiť nielen ako zálohu dát, ale aj na ich migráciu či na import databázy.
Existuje niekoľko typov exportov:
- Kompletný export – súbor bude obsahovať ako štruktúru tabuliek, tak aj ich dáta.
- Export štruktúry – súbor bude obsahovať iba štruktúru tabuliek databázy. Takýto export môže obsahovať všetky alebo iba vybrané tabuľky databázy.
- Export dát – súbor bude obsahovať iba dáta tabuliek. Aj tu môžeme špecifikovať, z akých tabuliek chceme dáta uložiť.
Začneme krátkym opakovaním. Najprv zmažeme existujúce záznamy používateľov z databázy, ak nám v nej nejaké ostali:
TRUNCATE TABLE `users`;
Potom do tabuľky vložíme nové dáta, aby sme ich mohli exportovať:
INSERT INTO `users` ( `first_name`, `last_name`, `birthdate`, `article_count` ) VALUES ('John', 'Smith', '1984-11-03', 17), ('Thomas', 'Brown', '1989-02-01', 6), ('Jack', 'Newman', '1972-12-20', 9);
V databáze teraz teda máme tri záznamy osôb:
Kompletný export
Skúsme si najskôr exportovať dáta aj štruktúru konkrétnej tabuľky. Najjednoduchšie to môžeme urobiť tak, že klikneme na danú tabuľku vľavo v navigácii a potom klikneme na tlačidlo Export v hornej lište:
Otvorí sa nám nové okno, v ktorom nižšie nájdeme predvyplnené možnosti:
Tento spôsob exportu je rýchly a tiež vhodný, ak nepotrebujeme špecifikovať napríklad znakovú sadu, kompresiu súboru, doplňovacie príkazy a ďalšie podrobnosti.
Na výber tu máme niekoľko formátov súboru exportu, niektoré si popíšeme:
- SQL – tento formát je východiskovým formátom, ide o textový súbor obsahujúci SQL príkazy alebo skripty.
- CSV – využíva sa často na export do programu MS Excel, dáta sú oddelené čiarkou.
- JSON – hojne sa využíva v JavaScripte a API webových aplikácií.
Ďalej tu máme napríklad formáty XML, PDF, PHP array a ďalšie, ktoré si bližšie popisovať nebudeme.
V ponuke necháme formát SQL. Predvolené nastavenie rýchleho exportu však vytvorí súbor, ktorý nie je možné použiť na import, pokiaľ sa daná tabuľka v databáze už nachádza, hoci aj prázdna.
Úprava nastavenia exportu
Najprv teda zmeníme spôsob exportu na Custom:
Zídeme nižšie a v sekcii Object creation options aktivujeme hneď prvú možnosť Add DROP TABLE / TRIGGER statement:
Tým zaistíme, že sa pôvodná tabuľka pred importom novej tabuľky najskôr zmaže.
Výber konkrétnych záznamov pre export
Keď sa vrátime do hornej časti okna, uvidíme, že v sekcii Rows
môžeme vybrať iba niektoré záznamy pre export. Skúsime si teda exportovať
všetky záznamy okrem prvého. Klikneme na možnosť Dump some row(s).
Do poľa Number of row(s): zadáme hodnotu 3
a v poli
Row to begin at: prepíšeme predvolenú hodnotu 0
na
1
:
Nakoniec klikneme na tlačidlo Export, ktoré je úplne dole.
Súbor s exportovanými dátami
Stiahnutý súbor si otvoríme v textovom editore a uvidíme nasledujúci obsah:
-- phpMyAdmin SQL Dump -- version 5.2.1 -- https://www.phpmyadmin.net/ -- -- Host: 127.0.0.1 -- Generation Time: May 25, 2024 at 06:35 PM -- Server version: 10.4.32-MariaDB -- PHP Version: 8.2.12 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; START TRANSACTION; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8mb4 */; -- -- Database: `database_for_web` -- -- -------------------------------------------------------- -- -- Table structure for table `users` -- DROP TABLE IF EXISTS `users`; CREATE TABLE `users` ( `user_id` int(11) NOT NULL, `first_name` varchar(60) NOT NULL, `last_name` varchar(60) NOT NULL, `birthdate` date NOT NULL, `article_count` int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci; -- -- Dumping data for table `users` -- INSERT INTO `users` (`user_id`, `first_name`, `last_name`, `birthdate`, `article_count`) VALUES (2, 'Thomas', 'Brown', '1989-02-01', 6), (3, 'Jack', 'Newman', '1972-12-20', 9); -- -- Indexes for dumped tables -- -- -- Indexes for table `users` -- ALTER TABLE `users` ADD PRIMARY KEY (`user_id`); -- -- AUTO_INCREMENT for dumped tables -- -- -- AUTO_INCREMENT for table `users` -- ALTER TABLE `users` MODIFY `user_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4; COMMIT; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Úplne na začiatku máme informácie o tom, z akej IP adresy exportujeme,
aká je verzia MySQL a PHP a ďalšie. Tie sú uvedené v komentári
začínajúcom dvoma pomlčkami --
. Všetko, čo je za týmito
pomlčkami na rovnakom riadku je komentár. Viacriadkové komentáre uvádzame
pomocou znakov /*
a ukončujeme ich znakmi */
.
Zaujímavejšie sú však v našom súbore uvedené SQL príkazy idúce po
sebe tak, ako sa vykonajú pri importe. Môžeme si všimnúť, že tabuľku
najskôr odstránime (ak existuje) a potom vytvárame novú. Riadok s príkazom
DROP TABLE IF EXISTS
bol do súboru pridaný, keď sme upravili
nastavenie importu. Ak by sme zvolili rýchly export, v súbore by nebol
uvedený.
Importom teda stratíme všetky prípadné existujúce dáta. Toto správanie môže byť často nežiadúce a preto exportujeme mnohokrát iba dáta bez štruktúry tabuľky.
Stiahnutý súbor si zatiaľ ponecháme, využijeme ho pre budúci import
Export dát
Ak chceme exportovať iba dáta, postup je rovnaký, len v sekcii Format-specific options: zaškrtneme položku data:
Keď databázu takto exportujeme, budeme mať v súbore exportu tento obsah:
-- phpMyAdmin SQL Dump -- version 5.2.1 -- https://www.phpmyadmin.net/ -- -- Host: 127.0.0.1 -- Generation Time: May 25, 2024 at 06:46 PM -- Server version: 10.4.32-MariaDB -- PHP Version: 8.2.12 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; START TRANSACTION; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8mb4 */; -- -- Database: `database_for_web` -- -- -- Dumping data for table `users` -- INSERT INTO `users` (`user_id`, `first_name`, `last_name`, `birthdate`, `article_count`) VALUES (2, 'Thomas', 'Brown', '1989-02-01', 6), (3, 'Jack', 'Newman', '1972-12-20', 9); COMMIT; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Tento súbor však v ďalších lekciách potrebovať nebudeme.
Export celej databázy
Keby sme chceli mať v exporte celú databázu, teda aj príkaz na vytvorenie databázy, musíme kliknúť vľavo na konkrétnu databázu a potom na Export. V novom okne opäť vyberieme Custom - display all possible options a nižšie v sekcii Object creation options aktivujeme možnosť Add CREATE DATABASE / USE statement:
Vďaka tomu potom pred importom nemusíme databázu ručne vytvárať a premýšľať, aké by mala mať porovnávanie a podobne.
Export niekoľkých databáz naraz
Ukážme si na záver, ako postupovať, keby sme chceli exportovať všetky databázy naraz. Presunieme sa na hlavnú stránku nástroja phpMyAdmin (klikneme na ikonu domčeka) a potom otvoríme záložku Export. Tu vyberieme Custom - display all possible options, aby sme mali možnosť špecifikovať databázy, ktoré chceme do exportu zahrnúť:
Aj v tomto prípade je dobré potom zase navigovať nižšie a zabezpečiť, aby sa do exportu pridali príkazy na tvorbu vybraných databáz.
Súbor vytvorený kompletným exportom je k dispozícii nižšie v archíve tejto lekcie.
V ďalšej lekcii, MySQL krok za krokom - Import, si ukážeme, ako importovať dáta do databázy.
Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.
Stiahnuť
Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami
Stiahnuté 17x (1.3 kB)
Aplikácia je vrátane zdrojových kódov v jazyku mysql