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

5. diel - MySQL krok za krokom: Import

V minulej lekcii, MySQL krok za krokom: Dátové typy a NULL , sme si ukázali rôzne typy exportov databázy.

Dnes si vytvorenú zálohu tabuľky (export) z minulej lekcie skúsime naimportovať.

Import dát

V tabuľke máme teda nejaké dáta, ale keďže sme si urobili export tabuľky uzivatele, môžeme jednoducho túto zálohu naimportovať. Najskôr si skúsme celú tabuľku zmazať:

DROP TABLE `uzivatele`;

Teraz v databáze nemáme žiadnu tabuľku. Import vykonáme podobne ako export, len klikneme na konkrétnu databázu, kde chceme dáta importovať, a potom na tlačidlo Import v hornej lište. Mali by sme sa dostať na nasledujúcu stránku:

import stránka - MySQL databázy krok za krokom

Import sa môže zdať komplikovaný, v skutočnosti to je ale jednoduchšie než export. Najprv vyberieme súbor, ktorý chceme importovať. Pre nás to bude ten prvý vytvorený súbor, ktorý sme si skúšali vyexportovať v minulej lekcii. Pokiaľ ho nemáte, môžete si ho stiahnuť na konci článku a alebo si ho skúsiť vyexportovať. V súbore je príkaz pre vytvorenie tabuľky i dát. Potom skontrolujeme znakovú sadu súboru, či je utf-8.

Ďalej tu máme funkciu "Čiastočný import". Túto funkciu môžeme nechať zapnutú, pretože importujeme malý súbor a nič by sa pokaziť nemalo. Osobne túto funkciu nemám rád a radšej ju vypínam. Nechcem totiž v databáze polovicu dát a druhú polovicu dát neimportovanou.

Ďalej tu máme Kontrolu cudzích kľúčov. Pri importe dát, kde máme vytvorené relácie (vzťahy medzi tabuľkami), využijeme túto funkciu pomerne často. O cudzích kľúčoch si povieme viac inokedy. Ďalej vyberieme správny formát. Musí sa zhodovať s tým formátom, ktorý sme vybrali na začiatku.

Formátov pre export je viac než pre import. Vyberte pre import radšej formát, ktorý sa dá potom aj importovať, najlepšie SQL.

Ak máme všetko nastavené, klikneme na tlačidlo Vykonaj. Zobrazí sa nám správy o úspešnom importe:

úspešný import - MySQL databázy krok za krokom

Teraz máme v databáze dáta, ktoré sme zálohovali:

MySQL databázy krok za krokom

Skúsme si všetky užívateľa zmazať:

DELETE FROM `uzivatele`;

Tabuľka je opäť prázdna:)

Veľké databázy

Niekedy sa môže stať, že import bude neúspešný. Veľký súbor môže phpMyAdmin importovať napríklad dlhšie ako 6 minút. V predvolenom nastavení PHP servera je práve maximálny čas vykonávaného skriptu 360 alebo 120 sekúnd, preto bude import neúspešný a túto premennú musíme zmeniť. Táto premenná sa nazýva max_execution_time. Súbory exportov veľkých databáz bývajú rozdelené na štruktúru, a potom niekoľko súborov na dáta. Ukážeme si, ako obmedzenie trvania skriptu zvýšiť, aby sme mohli takto veľké súbory databáz importovať.

Ďalším problémom je chyba max_allowed_packet, vďaka ktorému môže váš import failnout:

max_packet_size - MySQL databázy krok za krokom

Nastavenie

Keďže v cvičeniach budeme importovať ďalšie databázy, je vhodné si pred importom databáz premenné správne nastaviť. To môžeme urobiť v konfiguračnom súbore php.ini. Dostaneme sa do neho jednoducho cez XAMPP kliknutím na tlačidlo Config na riadku modulu Apache:

Nastavenie php.ini v XAMPP - MySQL databázy krok za krokom

Klikneme na PHP (php.ini). Otvorí sa nám súbor, kde zmeníme teda tieto premenné:

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

Môžeme využiť funkciu CTRL + F pre rýchle hľadanie frázy.

Hodnota 0 u max_execution_time zmení trvania skriptu na neobmedzenú dobu, taktiež je to u max_input_time, ale s hodnotou -1. Memory limit si nastavíme aspoň na hodnotu 1G (1GB).

Teraz si otvoríme súbor my.ini. Postup je rovnaký, len je to pri module MySQL. Tu nastavíme premennú max_allowed_packet na 1G.

Po týchto zmenách musíme reštartovať službu Apache a MySQL. Klikneme na Stop v rozhraní XAMPP a potom na Štart pre zapnutie.

Import stále nejde

Ak import trvá veľmi dlho a nedarí sa ho vďaka tomu korektne importovať, odporúčam si súbor otvoriť v poznámkovom bloku. U príkazov pre vkladanie (INSERT INTO...) skontrolujte počet záznamov (čiže počet riadkov) na jeden taký príkaz INSERT. Ak totiž importujeme dlhý príkaz, ktorý napríklad pridá 10 000 záznamov, často táto operácia zlyhá. Je dobré taký príkaz rozdeliť na čiastkové príkazy.

Ak máme teda príkaz INSERT, ktorý pridá naraz 10 000 záznamov, rozdelíme ho na 10 príkazov po 1000 záznamoch:

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 spôsob zrýchli proces importovanie dát. Pri exporte phpMyAdmin túto metódu automaticky využíva, ak však máte databázu z tretej ruky alebo ju treba generujete nejakým skriptom, je vhodné sa na tento súbor pozrieť a upraviť ho:)

Kontrola dát

Ak budeme nahrávať väčšie databázu (napríklad v MySQL cvičenie), malo by všetko byť v poriadku. Ak ste sem prišli z cvičenia, môžete pre kontrolu importovaných dát využiť tieto dva screeny, najprv pre databázu insane_racing (pretekári):

MySQL databázy krok za krokom

a potom databázu simple_money (eshop):

MySQL databázy krok za krokom

Skontrolujte si počet tabuliek a celkový počet riadkov (záznamov). Ak sa všetko zhoduje, dáta sú pravdepodobne správna:)

Nabudúce si v lekcii MySQL krok za krokom: Dátové typy a NULL povieme niečo o hodnote NULL a predstavíme si tabuľku dátových typov v MySQL.


 

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 709x (1.47 kB)

 

Predchádzajúci článok
MySQL krok za krokom: Vývoz
Všetky články v sekcii
MySQL databázy krok za krokom
Preskočiť článok
(neodporúčame)
MySQL krok za krokom: Dátové typy a NULL
Článok pre vás napísal Samuel Hél
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
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