Lekce 4 - MySQL krok za krokem - Export
V minulé lekci, MySQL krok za krokem - Vkládání a mazání dat v tabulce, jsme si ukázali, jak vložit záznamy do databázové tabulky a jak je mazat.
V tomto MySQL tutoriálu si ukážeme, jak exportovat data naší databáze. Vytvoření zálohy se nám bude jistě mnohokrát hodit ať už pro případné obnovení našich dat nebo jejich sdílení s ostatními.
Typy exportů
Export, nebo také záloha, je soubor se SQL příkazy. Ten můžeme využít nejen jako zálohu dat, ale i pro jejich migraci či na import databáze.
Existuje několik typů exportů:
- Kompletní export – soubor bude obsahovat jak strukturu tabulek, tak i jejich data.
- Export struktury – soubor bude obsahovat pouze strukturu tabulek databáze. Takový export může obsahovat všechny nebo pouze vybrané tabulky databáze.
- Export dat – soubor bude obsahovat pouze data tabulek. I zde můžeme specifikovat, z jakých tabulek chceme data uložit.
Začneme krátkým opakováním. Nejprve smažeme stávající záznamy uživatelů z databáze, pokud nám v ní nějaké zbyly:
TRUNCATE TABLE `uzivatele`;
Poté do tabulky vložíme nová data, abychom je mohli exportovat:
INSERT INTO `uzivatele` ( `jmeno`, `prijmeni`, `datum_narozeni`, `pocet_clanku` ) VALUES ('Jan', 'Novák', '1984-11-03', 17), ('Tomáš', 'Marný', '1989-02-01', 6), ('Josef', 'Nový', '1972-12-20', 9), ('Michaela', 'Slavíková', '1990-08-14', 1);
V databázi nyní tedy máme čtyři záznamy osob:
Kompletní export
Zkusme si nejprve exportovat data i strukturu konkrétní tabulky. Můžeme to nejjednodušeji udělat tak, že klikneme na danou tabulku vlevo v navigaci a poté klikneme na tlačítko Export v horní liště:
Otevře se nám nové okno, ve kterém níže nalezneme předvyplněné možnosti:
Tento způsob exportu je rychlý a také vhodný, pokud nepotřebujeme specifikovat například znakovou sadu, kompresi souboru, doplňovací příkazy a další podrobnosti.
Na výběr zde máme několik formátů souboru exportu, některé si popíšeme:
- SQL – tento formát je výchozím formátem, jde o textový soubor obsahující SQL příkazy nebo skripty.
- CSV – využívá se často pro export do programu MS Excel, data jsou oddělená čárkou.
- JSON – hojně se využívá v JavaScriptu a API webových aplikací.
Dále zde máme například formáty XML, PDF, PHP array a další, které si blíže popisovat nebudeme.
V nabídce necháme formát SQL. Výchozí nastavení rychlého exportu však vytvoří soubor, který nelze použít pro import, pokud se daná tabulka v databázi již nachází třebaže prázdná.
Úprava nastavení exportu
Nejprve tedy změníme způsob exportu na Vlastní:
Sjedeme níže a v sekci Nastavení vytváření objektů aktivujeme hned první možnost Přidat příkaz DROP TABLE / TRIGGER:
Tím zajistíme, že se původní tabulka před importem nové tabulky nejprve smaže.
Výběr konkrétních záznamů pro export
Když se vrátíme do horní části okna, uvidíme, že v sekci
Řádky můžeme vybrat jen některé záznamy pro export. Zkusíme si
tedy exportovat všechny záznamy kromě prvního. Klikneme na možnost
Vypsat některé řádky. Do pole Počet řádků: zadáme
hodnotu 3
a v poli Začít od řádku: přepíšeme
výchozí hodnotu 0
na 1
:
Nakonec klikneme na tlačítko Export, které je úplně dole.
Soubor s exportovanými daty
Stažený soubor si otevřeme v textovém editoru a uvidíme následující obsah:
-- phpMyAdmin SQL Dump -- version 5.2.1 -- https://www.phpmyadmin.net/ -- -- Počítač: 127.0.0.1 -- Vytvořeno: Pát 05. dub 2024, 13:55 -- Verze serveru: 10.4.32-MariaDB -- Verze PHP: 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 */; -- -- Databáze: `databaze_pro_web` -- -- -------------------------------------------------------- -- -- Struktura tabulky `uzivatele` -- DROP TABLE IF EXISTS `uzivatele`; CREATE TABLE `uzivatele` ( `uzivatele_id` int(11) NOT NULL, `jmeno` varchar(60) NOT NULL, `prijmeni` varchar(60) NOT NULL, `datum_narozeni` date NOT NULL, `pocet_clanku` int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci; -- -- Vypisuji data pro tabulku `uzivatele` -- INSERT INTO `uzivatele` (`uzivatele_id`, `jmeno`, `prijmeni`, `datum_narozeni`, `pocet_clanku`) VALUES (2, 'Tomáš', 'Marný', '1989-02-01', 6), (3, 'Josef', 'Nový', '1972-12-20', 9), (4, 'Michaela', 'Slavíková', '1990-08-14', 1); -- -- Indexy pro exportované tabulky -- -- -- Indexy pro tabulku `uzivatele` -- ALTER TABLE `uzivatele` ADD PRIMARY KEY (`uzivatele_id`); -- -- AUTO_INCREMENT pro tabulky -- -- -- AUTO_INCREMENT pro tabulku `uzivatele` -- ALTER TABLE `uzivatele` MODIFY `uzivatele_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5; 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 */;
Úplně na začátku máme informace o tom, z jaké IP adresy exportujeme,
jaká je verze MySQL a PHP a další. Ty jsou uvedené v komentáři
začínajícím dvěma pomlčkami --
. Vše, co je za těmito
pomlčkami na stejném řádku je komentář. Víceřádkové komentáře
uvádíme pomocí znaků /*
a ukončujeme je znaky
*/
.
Zajímavější jsou však v našem souboru uvedené SQL příkazy jdoucí po
sobě tak, jak se vykonají při importu. Můžeme si všimnout, že tabulku
nejdříve odstraníme (pokud existuje) a poté vytváříme novou. Řádek s
příkazem DROP TABLE IF EXISTS
byl do souboru přidán, když jsme
upravili nastavení importu. Pokud bychom zvolili rychlý export, v souboru by
nebyl uveden.
Importem tedy ztratíme všechna případná stávající data. Toto chování může být často nežádoucí a proto exportujeme mnohdy pouze data bez struktury tabulky.
Stažený soubor si zatím ponecháme, využijeme ho pro budoucí import
Export dat
Chceme-li exportovat pouze data, postup je stejný, pouze v sekci Parametry pro výstupní formát: zaškrtneme položku data:
Když databázi takto exportujeme, budeme mít v souboru exportu tento obsah:
-- phpMyAdmin SQL Dump -- version 5.2.1 -- https://www.phpmyadmin.net/ -- -- Počítač: 127.0.0.1 -- Vytvořeno: Pát 05. dub 2024, 16:04 -- Verze serveru: 10.4.32-MariaDB -- Verze PHP: 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 */; -- -- Databáze: `databaze_pro_web` -- -- -- Vypisuji data pro tabulku `uzivatele` -- INSERT INTO `uzivatele` (`uzivatele_id`, `jmeno`, `prijmeni`, `datum_narozeni`, `pocet_clanku`) VALUES (2, 'Tomáš', 'Marný', '1989-02-01', 6), (3, 'Josef', 'Nový', '1972-12-20', 9), (4, 'Michaela', 'Slavíková', '1990-08-14', 1); 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 soubor však v dalších lekcích potřebovat nebudeme.
Export celé databáze
Kdybychom chtěli mít v exportu celou databázi, tedy i příkaz pro vytvoření databáze, musíme kliknout vlevo na konkrétní databázi a poté na Export. V novém okně opět vybereme vlastní způsob exportu a níže v sekci Nastavení vytváření objektů aktivujeme možnost Přidat příkaz CREATE DATABASE / USE:
Díky tomu pak před importem nemusíme databázi ručně vytvářet a přemýšlet, jaké by mělo mít porovnávání a podobně.
Export několika databází najednou
Ukažme si na závěr, jak postupovat, kdybychom chtěli exportovat všechny databáze najednou. Přesuneme se na hlavní stránku nástroje phpMyAdmin (klikneme na ikonu domečku) a poté otevřeme záložku Export. Zde vybereme vlastní způsob exportu, abychom měli možnost specifikovat databáze, které chceme do exportu zahrnout:
I v tomto případě je dobré poté zase navigovat níže a zajistit, aby se do exportu přidaly příkazy pro tvorbu vybraných databází.
Soubor vytvořený kompletním exportem je k dispozici níže v archivu této lekce.
V další lekci, MySQL krok za krokem - Import, si ukážeme, jak importovat data do databáze.
Měl jsi s čímkoli problém? Stáhni si vzorovou aplikaci níže a porovnej ji se svým projektem, chybu tak snadno najdeš.
Stáhnout
Stažením následujícího souboru souhlasíš s licenčními podmínkami
Staženo 696x (1.37 kB)
Aplikace je včetně zdrojových kódů v jazyce MySQL