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

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

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

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

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

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

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

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

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

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 670x (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
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í:
618 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