Import velkých SQL souboru

Databáze, Windows, Linux

Importovat SQL soubory umí téměř každý nástroj pro práci s databází. Co když ale SQL soubor má stovky MB. Někdy již nástroje nemusí stačit. Ukážeme si, jak importovat soubory přes příkazovou řádku ve Windows či Linuxu přímo do databáze.

Import velkých SQL souboru

Problém velkých souborů

Ať už využijeme Adminer nebo PHPMyAdmin, či úplně jiný nástroj, někde určitě bude obsahovat možnost importovat SQL soubor. Pokud je ovšem napsán v PHP, Apache nám může vykonávání skriptu ukončit nebo import bude trvat velmi dlouho, protože je zpracováván samotným skriptem.

S tímto problémem jsem se setkal v práci, kde jsem potřeboval importovat databázi o velikosti 800MB. Hned mi řekli, že přes Adminera se to zatím nikomu nepodařilo, ať import udělám přes příkazovou řádku.

Využití příkazové řádky

Pracovat s databází lze přímo bez využití správce. MySQL v základu ale žádný nástroj s uživatelským rozhraním nenabízí, proto bude potřeba využít příkazové řádky.

Windows

Pokud využíváte XAMPP, příkaz mysql bude v příkazové řádce nefunkční. Proto je potřeba se pomocí příkazu cd přepnout do složky s programem mysql.exe.

Adresu zadejte podle vašeho umístění.

cd /web/xampp/mysql/bin/

Pokud SQL soubor obsahuje příkaz pro vytvoření databáze případně přepnutí do databáze při importu není potřeba psát jméno databáze, kterou chceme využít.

CREATE DATABASE `blog`;
USE `blog`;

Nyní provedeme import. Pokud náš SQL soubor obsahuje výše zmíněné příkazy, nazev_databaze můžeme vynechat.

# Provedeme import pomocí programu mysql.exe
mysql.exe -u uzivatel -p nazev_databaze < soubor

# příklad
mysql.exe -u root -p blog < D:\Plocha\blog.sql

Za přepínač -u zadáme naše přihlašovací jméno, přepínač -p určuje, že je potřeba heslo, ke kterému budeme vyzváni hned poté. Dále můžeme uvést název databáze a cestu k souboru pro import.

Linux

Na Linuxu máme práci o něco jednodušší. Zde nemusíte hledat program MySQL, stačí zadat příkaz mysql. Vše ostatní je shodné, jako u Windows.

# Provedeme import pomocí programu mysql
mysql -u uzivatel -p nazev_databaze < soubor

# příklad
mysql -u root -p blog < blog.sql

TIP na závěr

Pokud nepošleme přes příkazovou řádku na vstup programu nějaký soubor, spustí se nám aplikace MySQL kde můžeme libovolně psát SQL příkazy. Lze si takto nasimulovat ovlivnění příkazů transakcemi.

Pokud si otevřeme 2 terminály, v každém se připojíme, můžeme udržet transakce otevřené delší dobu a testovat si co se kdy stane.

# Spustíme MySQL klienta v příkazové řádce k provádění příkazů
mysql.exe -u root -p
USE `blog`;
BEGIN TRANSACTION
...

K tomuto článku již není možné přidávat další komentáře