Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
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 5 - MySQL krok za krokem: Import

V minulé lekci, MySQL krok za krokem - Export, jsme si ukázali různé typy exportů databáze.

Dnes si vytvořenou zálohu tabulky (export) z minulé lekce zkusíme naimportovat.

Import dat

V tabulce máme tedy nějaké data, ale jelikož jsme si udělali export tabulky uzivatele, můžeme jednoduše tuto zálohu naimportovat. Nejdříve si zkusme celou tabulku smazat:

DROP TABLE `uzivatele`;

Nyní v databázi nemáme žádnou tabulku. Import provedeme podobně jako export, pouze klikneme na konkrétní databázi, kde chceme data importovat, a poté na tlačítko Import v horní liště. Měli bychom se dostat na následující stránku:

Import stránka - MySQL/MariaDB databáze krok za krokem

Import se může zdát komplikovaný, ve skutečnosti to je ale jednodušší než export. Nejprve vybereme soubor, který chceme importovat. Pro nás to bude ten první vytvořený soubor, který jsme si zkoušeli vyexportovat v minulé lekci. Pokud ho nemáte, můžete si ho stáhnout na konci článku a nebo si ho zkusit vyexportovat. V souboru je příkaz pro vytvoření tabulky i dat. Poté zkontrolujeme znakovou sadu souboru, zda je utf-8.

Dále zde máme funkci "Částečný import". Tuto funkci můžeme nechat zapnutou, jelikož importujeme malý soubor a nic by se pokazit nemělo. Osobně tuto funkci nemám rád a raději ji vypínám. Nechci totiž v databázi polovinu dat a druhou polovinu dat neimportovanou.

Dále tu máme Kontrolu cizích klíčů. Při importu dat, kde máme vytvořené relace (vztahy mezi tabulkami), využijeme tuto funkci poměrně často. O cizích klíčích si povíme více jindy. Dále vybereme správný formát. Musí se shodovat s tím formátem, který jsme vybrali na začátku.

Formátů pro export je více než pro import. Vyberte pro export raději formát, který se dá poté i importovat, nejlépe SQL.

Pokud máme vše nastaveno, klikneme na tlačítko Proveď. Zobrazí se nám zprávy o úspěšném importu:

Úspěšný import - MySQL/MariaDB databáze krok za krokem

Nyní máme v databázi data, která jsme zálohovali:

MySQL/MariaDB databáze krok za krokem

Zkusme si všechny uživatele smazat:

DELETE FROM `uzivatele`;

Tabulka je opět prázdná :)

Velké databáze

Někdy se může stát, že import bude neúspěšný. Velký soubor může phpMyAdmin importovat například déle než 6 minut. Ve výchozím nastavení PHP serveru je právě maximální čas vykonávaného skriptu 360 nebo 120 sekund, proto bude import neúspěšný a tuto proměnnou musíme změnit. Tato proměnná se nazývá max_execution_time. Soubory exportů velkých databází bývají rozděleny na strukturu, a poté několik souborů na data. Ukážeme si, jak omezení trvání skriptu zvýšit, abychom mohli takto velké soubory databází importovat.

Dalším problémem je chyba max_allowed_packet, díky kterému může váš import failnout:

max_packet_size - MySQL/MariaDB databáze krok za krokem

Nastavení

Jelikož ve cvičeních budeme importovat další databáze, je vhodné si před importem databází proměnné správně nastavit. To můžeme udělat v konfiguračním souboru php.ini. Dostaneme se do něj jednoduše přes XAMPP kliknutím na tlačítko Config na řádce modulu Apache:

Nastavení php.ini v XAMPP - MySQL/MariaDB databáze krok za krokem

Klikneme na PHP (php.ini). Otevře se nám soubor, kde změníme tedy tyto proměnné:

  • max_execution_time = 0
  • max_input_time = -1
  • memory_limit = 1G

Můžeme využít funkci CTRL+F pro rychlé hledání fráze.

Hodnota 0 u max_execution_time změní trvání skriptu na neomezenou dobu, taktéž je to u max_input_time, ale s hodnotou -1. Memory limit si nastavíme alespoň na hodnotu 1G (1GB).

Nyní si otevřeme soubor my.ini. Postup je stejný, jen je to u modulu MySQL. Zde nastavíme proměnnou max_allowed_packet na 1G. Tato proměnná musí být pod hlavičkou [mysqldump], je to většinou ten druhý nález v souboru.

Po těchto změnách musíme restartovat službu Apache a MySQL. Klikneme na Stop v rozhraní XAMPP a poté na Start pro zapnutí.

Import stále nejde

Pokud import trvá velmi dlouho a nedaří se ho díky tomu korektně importovat, doporučuji si soubor otevřít v poznámkovém bloku. U příkazů pro vkládání (INSERT INTO...) zkontrolujte počet záznamů (neboli počet řádků) na jeden takový příkaz INSERT. Pokud totiž importujeme dlouhý příkaz, který například přidá 10 000 záznamů, často tato operace selže. Je dobré takový příkaz rozdělit na dílčí příkazy.

Pokud máme tedy příkaz INSERT, který přidá najednou 10 000 záznamů, rozdělíme ho na 10 příkazů po 1000 záznamech:

INSERT INTO `item` (`product_id`, `code`, `title`, `price`) VALUES
(1, '3269_J', 'Brašna Karya ultra 566 yellow', '849.0'),
(2, '1403_I', 'Brašna Karya medium 960 black', '899.0'),
(3, '1059_N', 'Brašna Karya medium 283 black', '899.0'),
(4, '3623_T', 'Brašna Karya small 245 blue', '899.0'),
(5, '2867_W', 'Brašna A-ELITA', '999.0'),
/* zde by bylo dalších 838 záznamů */
(843, '1741740', 'Fritéza Moulinex LV-839WF, růžová', '2849.0'),
(844, '1695207', 'Fritéza Moulinex LH-319KJ, stříbrná', '3149.0'),
(845, '2787965', 'Fritéza Moulinex MQ-768LA, černá', '2699.0'),
(846, '2618863', 'Fritéza Moulinex LQ-998AZ, žltá', '2699.0');

/* další příkaz INSERT */
INSERT INTO `item` (`product_id`, `code`, `title`, `price`) VALUES
(847, '1500603', 'Fritéza KITFORT', '2699.0'),
(848, '2792623', 'Medium Fritéza Gorenje talent gradient silver', '3149.0'),
(849, '2248192', 'Fritéza UNIT sky', '2549.0'),
(850, '2379065', 'Fritéza UNIT sun', '3149.0'),
/* dalších 794 záznamů */
(1645, '802964_O', 'Big Stolní počítač JBL l6 sensitive bright yellow', '17999.0'),
(1646, '801345_X', 'Stolní počítač Cnd DX-514DC, hnědá', '17999.0'),
(1647, '803198_A', 'Stolní počítač Cnd RD-509UV, červená', '17999.0');

/* další příkaz INSERT */
INSERT INTO `item` (`product_id`, `code`, `title`, `price`) VALUES
(1648, '800672_T', 'Stolní počítač Cnd BK-539CL, žltá', '19999.0'),
(1649, '800854_G', 'Stolní počítač Cnd KS-374ZB, žltá', '20999.0'),
/* ... */

Tento způsob zrychlí proces importování dat. Při exportu phpMyAdmin tuto metodu automaticky využívá, pokud však máte databázi z třetí ruky nebo ji třeba generujete nějakým skriptem, je vhodné se na tento soubor kouknout a upravit ho :)

Kontrola dat

Pokud budeme nahrávat větší databázi (například v MySQL cvičení), mělo by vše být v pořádku. Pokud jste sem přišli z cvičení, můžete pro kontrolu importovaných dat využít tyto dva screeny, nejprve pro databázi insane_racing (závodníci):

MySQL/MariaDB databáze krok za krokem

a poté pro databázi simple_money (e-shop):

MySQL/MariaDB databáze krok za krokem

Zkontrolujte si počet tabulek a celkový počet řádků (záznamů). Pokud se vše shoduje, data jsou pravděpodobně správná :)

V následujícím kvízu, Kvíz - Tvorba, mazání, vkládání, import a export dat v MySQL, si vyzkoušíme nabyté zkušenosti z předchozích lekcí.


 

Stáhnout

Stažením následujícího souboru souhlasíš s licenčními podmínkami

Staženo 721x (1.47 kB)

 

Předchozí článek
MySQL krok za krokem - Export
Všechny články v sekci
MySQL/MariaDB databáze krok za krokem
Přeskočit článek
(nedoporučujeme)
Kvíz - Tvorba, mazání, vkládání, import a export dat v MySQL
Článek pro vás napsal Samuel Hél
Avatar
Uživatelské hodnocení:
508 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