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 so 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 užívateľov z databázy, pokiaľ 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. Môžeme to najjednoduchšie 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ý, pokiaľ 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 prázdna.
Úprava nastavenia exportu
Najprv teda zmeníme spôsob exportu na Custom:
Zídeme nižšie av 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
av 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žiaduce 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ý, iba 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 malo 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é 12x (1.3 kB)
Aplikácia je vrátane zdrojových kódov v jazyku mysql