IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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:

Zobrazení přidaných uživatelů v phpMyAdmin - MySQL/MariaDB databáze krok za krokem

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ření záložky pro export v phpMyAdmin - MySQL/MariaDB databáze krok za krokem

Otevře se nám nové okno, ve kterém níže nalezneme předvyplněné možnosti:

Výchozí vzhled záložky pro export - MySQL/MariaDB databáze krok za krokem

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í:

Nastavení vlastního exportu - MySQL/MariaDB databáze krok za krokem

Sjedeme níže a v sekci Nastavení vytváření objektů aktivujeme hned první možnost Přidat příkaz DROP TABLE / TRIGGER:

Nastavení možnosti přepsání existující tabulky - MySQL/MariaDB databáze krok za krokem

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:

Výběr řádků pro export - MySQL/MariaDB databáze krok za krokem

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:

Export samotných dat - MySQL/MariaDB databáze krok za krokem

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:

Export s příkazem pro tvorbu databáze - MySQL/MariaDB databáze krok za krokem

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:

Export více databází - MySQL/MariaDB databáze krok za krokem

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 import 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 626x (1.37 kB)
Aplikace je včetně zdrojových kódů v jazyce MySQL

 

Předchozí článek
MySQL krok za krokem - Vkládání a mazání dat v tabulce
Všechny články v sekci
MySQL/MariaDB databáze krok za krokem
Přeskočit článek
(nedoporučujeme)
MySQL krok za krokem: Import
Článek pro vás napsal Samuel Hél
Avatar
Uživatelské hodnocení:
516 hlasů
Autor se věnuje hlavně programování, nejvíce z oblasti webových technologií, dělá občasné video edity ze svých dovolených. Má rád memes, svou gf a elektroniku
Aktivity