Průvodce importem MySQL: Import SQL dumpů a CSV rychle (LOAD DATA, Workbench, phpMyAdmin)

目次

1. Co budete schopni udělat v tomto článku

Mnoho lidí hledajících „MySQL data import“ se nachází v situaci, kdy chtějí:

  • „obnovit .sql soubor“
  • „importovat CSV“
  • „zastaví se s chybou“
  • „nefunguje ve Workbench ani phpMyAdmin“

Jinými slovy, chcete řešení, které můžete použít hned teď.

Nejprve zde jsou nejkratší „cesty k úspěchu“ podle cíle.

🔹 Nejrychlejší příkaz pro import SQL souboru (.sql)

Pro obnovu ze zálohy nebo migraci serveru je to nejrychlejší.

mysql -u username -p database_name < backup.sql

Věci, které je třeba zkontrolovat předem

  • Existuje cílová databáze?
  • Má připojující se uživatel oprávnění pro cílovou DB?
  • Kódování SQL souboru (obvykle UTF-8)

Pokud databáze ještě nebyla vytvořena:

CREATE DATABASE example_db;

🔹 Nejrychlejší způsob importu CSV souboru (doporučeno)

Pro rychlý import velkých dat je LOAD DATA ideální.

LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(id, name, @age)
SET age = NULLIF(@age,'');

Klíčové body

  • Koncové znaky Windows → '\r\n'
  • Pokud existuje řádek s hlavičkou → IGNORE 1 LINES
  • Převést prázdné řetězce na NULL → NULLIF()
  • Mnoho prostředí vyžaduje LOCAL (vysvětleno později)

🔹 Pokud chcete importovat přes GUI

MySQL Workbench

  • Server → Import dat → vyberte soubor → spusťte

phpMyAdmin

  • Vyberte cílovou DB → Import → zvolte soubor → spusťte

⚠ Nicméně pro velké soubory a spolehlivé zpracování chyb je CLI (příkazová řádka) spolehlivější.

🔹 3 položky, které je nutné zkontrolovat před importem

1. Znaková sada (nejdůležitější)

SHOW VARIABLES LIKE 'character_set%';

Doporučeno: utf8mb4

2. Nastavení, která způsobují chyby související s INFILE

SHOW VARIABLES LIKE 'local_infile';
SHOW VARIABLES LIKE 'secure_file_priv';

3. Kontrola oprávnění

SHOW GRANTS FOR 'user'@'localhost';

✔ Co následuje v tomto článku

  • Podrobné způsoby importu SQL souborů
  • Praktické techniky importu CSV
  • Kompletní rozbor, proč INFILE selhává
  • Nejrychlejší opravy podle typu chyby
  • Reálné techniky pro velké datové sady

MySQL data import workflow diagram showing SQL file, CSV file, LOAD DATA LOCAL INFILE, mysql command, and MySQL server process

2. Typy importů do MySQL a kdy je použít

Existuje několik způsobů, jak importovat do MySQL, ale nejlepší volba závisí na vašem konkrétním případu.
Pokud to správně pochopíte, můžete se vyhnout zbytečným potížím.

2.1 Kdy importovat SQL dump (.sql)

Běžné případy použití

  • Obnova ze zálohy
  • Migrace serveru
  • Aplikace dat podobných produkci do vývojového prostředí
  • Znovu importovat data exportovaná pomocí mysqldump

Vlastnosti

  • Obnoví celou strukturu tabulky + data
  • Vysoká reprodukovatelnost
  • Může zahrnovat transakce
  • Obecně nejbezpečnější volba

Typické metody

mysql -u user -p dbname < dump.sql

Nebo uvnitř MySQL:

SOURCE /path/to/dump.sql;

Nejvhodnější pro

  • Úplnou obnovu existující DB
  • Přestavbu produkčního prostředí
  • Načítání dat pro CI/CD prostředí

2.2 Kdy importovat CSV / TSV

Běžné případy použití

  • Příjem dat z externích systémů
  • Import dat z Excelu
  • ETL zpracování
  • Aktualizace pouze konkrétních tabulek

Vlastnosti

  • Načítá pouze data (schéma musí existovat samostatně)
  • Rychlé ( LOAD DATA je extrémně rychlé)
  • Umožňuje transformační logiku během importu

Typická metoda

LOAD DATA LOCAL INFILE 'file.csv'
INTO TABLE table_name
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';

Nejvhodnější pro

  • Plánované dávkové úlohy
  • Integraci dat
  • Vysokorychlostní ingestování velkého počtu řádků

2.3 Kdy použít GUI nástroje

Běžné nástroje:

  • MySQL Workbench
  • phpMyAdmin

Vlastnosti

  • Intuitivní ovládání
  • Přátelské pro začátečníky
  • Vhodné pro malé datové sady

Upozornění

  • Limity nahrávání (phpMyAdmin)
  • Časové limity
  • Nestabilní při velkých datech
  • Obtížnější analýza chyb

2.4 Porovnání podle metody (praktický pohled)

MethodSpeedStabilityLarge-file supportError analysisRecommendation
mysql command★★★★★
LOAD DATA★★★★★
Workbench★★★
phpMyAdmin×★★

✔ Doporučené volby v reálné práci

  • Obnova zálohy → mysql příkaz
  • Rychlý import CSV → LOAD DATA LOCAL INFILE
  • Malé jednorázové úkoly → GUI

Pokud si nejste jisti, vybrání CLI (příkazové řádky) je nejstabilnější volba.

3. Import SQL souboru (Nejrychlejší cesta k úspěchu)

Importování .sql souboru je nejčastější metoda pro obnovu záloh a migraci serverů.
Zde je cílem „uspět co nejrychleji“, takže se zaměříme jen na praktické kroky používané v reálné práci.

3.1 Obnova v jednom řádku (nejčastější metoda)

Toto je nejspolehlivější a nejrychlejší metoda.

mysql -u username -p database_name < backup.sql

Po spuštění budete vyzváni k zadání hesla.

✔ Předkontroly (aby se předešlo selhání)

① Existuje databáze?
SHOW DATABASES;

Pokud neexistuje:

CREATE DATABASE example_db;
② Má uživatel oprávnění?
SHOW GRANTS FOR 'user'@'localhost';

Pokud chybí oprávnění:

GRANT ALL PRIVILEGES ON example_db.* TO 'user'@'localhost';
FLUSH PRIVILEGES;
③ Kódování souboru

Obvykle je to UTF-8.
Pokud vidíte poškozené znaky, specifikujte jej explicitně.

mysql --default-character-set=utf8mb4 -u user -p dbname < backup.sql

3.2 Spuštění uvnitř MySQL (příkaz SOURCE)

Tato metoda se spouští po přihlášení do MySQL.

mysql -u user -p
USE example_db;
SOURCE /path/to/backup.sql;

Kdy je to užitečné

  • Když chcete spustit jen část SQL souboru
  • Když chcete zjistit přesné místo chyby
  • Když chcete vizuálně potvrdit výstup logu

3.3 Běžná selhání a opravy

❌ CHYBA 1049: Neznámá databáze

→ DB neexistuje
→ Spusťte CREATE DATABASE

❌ CHYBA 1045: Přístup odmítnut

→ Nedostatečná oprávnění
→ Zkontrolujte pomocí SHOW GRANTS

❌ Přerušení uprostřed / místo chyby není jasné

Oprava:

  1. Zkontrolujte začátek a konec souboru
    head backup.sql
    tail backup.sql
    
  1. Zkontrolujte řádky těsně před chybou
  2. Pokud je soubor velký, rozdělte jej a spusťte po částech
    split -l 10000 backup.sql part_
    

3.4 Tipy pro stabilizaci velkých SQL importů

① Zkontrolujte nastavení transakcí

Zkontrolujte, zda je zahrnuto SET autocommit=0;

② Pokud jsou problémem omezení cizích klíčů

SET FOREIGN_KEY_CHECKS=0;
-- import
SET FOREIGN_KEY_CHECKS=1;

③ Zkontrolujte SQL režim

SELECT @@sql_mode;

Přísný režim může ovlivňovat import.

✔ Praktická doporučení

  • Obnova v produkci → mysql příkaz
  • Ladění → SOURCE
  • Velké soubory → CLI + zvažte rozdělení

4. Import CSV (Nejdůležitější: nejrychlejší s LOAD DATA)

Při importu CSV dat je nejrychlejší a nejpraktičtější metoda LOAD DATA.
Pro velké datové sady je to výrazně rychlejší než INSERT příkazy.

Zde poskytneme správný formát „zkopíruj a spusť“ a zvýrazníme běžné body selhání.

4.1 Nejprve: předpoklady pro CSV

Před importem se ujistěte, že jste zkontrolovali následující.

✔ Oddělovač

  • Čárka ,
  • Tabulátor \t
  • Středník ; (běžný v zahraničních datech)

✔ Znak uvozovek

  • Zda jsou hodnoty uzavřeny jako "value" dvojitými uvozovkami

✔ Konec řádku

  • Linux / Mac → \n
  • Windows → \r\n

✔ Znaková sada / kódování

  • Doporučeno: utf8mb4
  • CSV vytvořené ve Windows může být Shift-JIS
  • UTF-8 s BOM může někdy způsobovat chyby

Příklad kontroly:

file -i example.csv

4.2 Základní forma připravená ke kopírování (CSV s hlavičkou)

LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(id, name, @age)
SET age = NULLIF(@age,'');

Význam každé volby

  • LOCAL  Načte soubor z klientské strany (vyžadováno v mnoha prostředích)
  • IGNORE 1 LINES  Přeskočí řádek s hlavičkou
  • @age  Dočasná proměnná používaná k transformaci hodnoty před uložením
  • NULLIF()  Převádí prázdné řetězce na NULL

4.3 Importujte pouze sloupce, které potřebujete

Pokud CSV obsahuje zbytečné sloupce:

LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(id, @dummy, age);

Namapujte nepotřebné sloupce na @dummy.

4.4 Převádějte data a typy během importu

Příklad: převést MM/DD/YYYY → formát MySQL

LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(@date_col, name)
SET date_col = STR_TO_DATE(@date_col, '%m/%d/%Y');

4.5 Pro tabulátorově oddělené (TSV)

FIELDS TERMINATED BY '\t'

4.6 Dále zlepšete výkon (pro velká data)

Dočasně vypněte indexy

ALTER TABLE example_table DISABLE KEYS;
-- Run LOAD DATA
ALTER TABLE example_table ENABLE KEYS;

Dočasně vypněte cizí klíče

SET FOREIGN_KEY_CHECKS=0;
-- Run LOAD DATA
SET FOREIGN_KEY_CHECKS=1;

Proč je LOCAL často vyžadováno

  • LOAD DATA INFILE → načte soubor na straně serveru
  • LOAD DATA LOCAL INFILE → načte soubor na straně klienta

V mnoha prostředích má používání LOCAL vyšší úspěšnost.

✔ Praktický doporučený postup

Ve většině případů:

LOAD DATA LOCAL INFILE
+ explicit delimiter
+ explicit line endings
+ IGNORE 1 LINES
+ type conversion

Toto je nejstabilnější přístup.

5. Top 4 důvody selhání INFILE (Nejdůležitější sekce)

Většina selhání LOAD DATA INFILE je způsobena nastavením, oprávněními nebo špatným pochopením umístění zdroje.
Pokud to pochopíte, můžete většinu chyb vyřešit okamžitě.

5.1 Rozdíl mezi INFILE a LOCAL INFILE

Toto je klíčový základní koncept.

CommandWhere it reads fromTypical use
LOAD DATA INFILEFile on the serverA fixed path on the server
LOAD DATA LOCAL INFILEFile on the clientA CSV on your local PC

Běžná nedorozumění

  • Pokus o načtení souboru z lokálního PC pomocí INFILE a selhání
  • Soubor na serveru neexistuje

✔ Rychlé pravidlo

  • CSV na vašem PC → LOCAL
  • CSV umístěný na serveru → INFILE

Pokud si nejste jisti, použití LOCAL je nejbezpečnější volba.

5.2 local_infile je vypnutý (příčina CHYBY 1148)

Příklad chyby:

ERROR 1148 (42000): The used command is not allowed with this MySQL version

Příčina:

local_infile je VYPNUTÝ

✔ Zkontrolujte aktuální nastavení

SHOW VARIABLES LIKE 'local_infile';

✔ Povolit při připojení (klientská strana)

mysql --local-infile=1 -u user -p

✔ Povolit trvale (konfigurační soubor)

Přidejte do my.cnf nebo my.ini:

[mysqld]
local_infile=1

Musíte restartovat server.

5.3 secure_file_priv omezení

K tomu dochází při použití LOAD DATA INFILE (bez LOCAL).

Zkontrolujte:

SHOW VARIABLES LIKE 'secure_file_priv';

Příklad výstupu

/var/lib/mysql-files/

→ Můžete číst soubory pouze v tomto adresáři.

✔ Oprava

  • Přesuňte CSV do povoleného adresáře
  • Nebo použijte LOCAL

5.4 Nedostatečná oprávnění (právo FILE / oprávnění OS)

Příklad chyby:

ERROR 1045: Access denied

Zkontrolujte:

SHOW GRANTS FOR 'user'@'localhost';

✔ Požadované oprávnění

GRANT FILE ON *.* TO 'user'@'localhost';

※ Z bezpečnostních důvodů pracujte s co nejmenšími oprávněními.

5.5 Nesprávná specifikace cesty

  • Používejte absolutní cestu, ne relativní
  • Na Windows je doporučeno C:/path/file.csv
  • Lomené (/) jsou bezpečnější než zpětné ()

✔ Rychlý postup řešení problémů s INFILE

  1. Přidali jste LOCAL ?
  2. SHOW VARIABLES LIKE 'local_infile';
  3. SHOW VARIABLES LIKE 'secure_file_priv';
  4. Zkontrolujte oprávnění (SHOW GRANTS)
  5. Zkontrolujte cestu (absolutní cesta)

V tomto pořadí můžete vyřešit většinu případů.

6. Import přes GUI (Workbench / phpMyAdmin)

Příkazový řádek je nejstabilnější, ale existují situace, kdy chcete použít nástroje GUI.
Zde se zaměříme na běžné body, kde lidé uvíznou v reálné práci.

6.1 Import s MySQL Workbench

Import souboru SQL (obnovení zálohy)

  1. Spusťte Workbench
  2. Menu → Server → Data Import
  3. Vyberte “Import from Self-Contained File”
  4. Vyberte soubor .sql
  5. Vyberte cílové schéma (databázi)
  6. Klikněte na “Start Import”

Import CSV (na tabulku)

  1. Klikněte pravým tlačítkem na cílovou tabulku
  2. Vyberte Table Data Import Wizard
  3. Vyberte soubor CSV
  4. Nastavte oddělovač a zda existuje hlavička
  5. Spusťte

⚠ Běžné důvody, proč se Workbench zasekne

  • Velké soubory (stovky MB nebo více)
  • Vypršení času
  • Nesoulad kódování
  • Omezení secure_file_priv

👉 Pro velké soubory nebo produkční prostředí je doporučen CLI.

6.2 Import s phpMyAdmin

Kroky

  1. Vyberte cílovou databázi
  2. Otevřete kartu “Import”
  3. Vyberte soubor
  4. Vyberte formát (SQL / CSV)
  5. Spusťte

⚠ Omezení phpMyAdmin

① Limit velikosti nahrávání

upload_max_filesize
post_max_size

Velké soubory selžou.

② Vypršení času
max_execution_time

Dlouhotrvající importy se mohou zastavit uprostřed.

③ Nedostatek paměti
memory_limit

6.3 Kdy byste měli použít GUI

  • Malé datové sady (pár MB)
  • Vývojová prostředí
  • Dočasná jednorázová práce

6.4 Kdy byste měli použít CLI (doporučeno)

  • Produkční prostředí
  • Desítky MB nebo více
  • Velké importy CSV
  • Když potřebujete analýzu chyb
  • Migrace server-server

✔ Praktický závěr

GUI je „snadné“, ale
CLI je zdaleka lepší pro stabilitu, reprodukovatelnost a zpracování velkých souborů.

Pro řešení problémů je nakonec doporučeno naučit se operace CLI.

7. Řešení problémů (Podle chyby: Příčina → Nejrychlejší oprava)

Většina chyb importu MySQL je vysoce strukturovaná.
Zde je uspořádáme v pořadí „příčina → první akce → ověřovací příkaz“.

7.1 ERROR 1148 (42000)

Použitý příkaz není povolen v této verzi MySQL

🔎 Příčina

  • LOAD DATA LOCAL INFILE je vypnuté
  • local_infile je OFF

✅ Nejrychlejší oprava

① Zkontrolujte aktuální nastavení

SHOW VARIABLES LIKE 'local_infile';

② Povolte při připojení (na straně klienta)

mysql --local-infile=1 -u user -p

③ Povolte natrvalo (pokud je potřeba)

[mysqld]
local_infile=1

→ Restartujte MySQL

7.2 ERROR 1366

Nesprávná hodnota řetězce

🔎 Příčina

  • Nesoulad kódování
  • Nesoulad mezi utf8 a utf8mb4
  • Smíchaný Shift-JIS

✅ Nejrychlejší oprava

① Zkontrolujte aktuální sadu znaků

SHOW VARIABLES LIKE 'character_set%';

② Převeďte tabulku na utf8mb4

ALTER TABLE example_table CONVERT TO CHARACTER SET utf8mb4;

③ Specifikujte to explicitně při importu

mysql --default-character-set=utf8mb4 -u user -p db < file.sql

7.3 ERROR 1062

Duplicitní záznam

🔎 Příčina

  • Duplicitní primární klíče
  • Porušení omezení UNIQUE

✅ Možnosti opravy

Možnost 1: Ignorovat duplicity
LOAD DATA LOCAL INFILE 'file.csv'
INTO TABLE example_table
IGNORE;
Možnost 2: Aktualizovat při duplicitě
INSERT INTO example_table (id, name)
VALUES (1,'John')
ON DUPLICATE KEY UPDATE name=VALUES(name);
Možnost 3: Použít stagingovou tabulku
CREATE TEMPORARY TABLE temp LIKE example_table;
-- LOAD into temp first
INSERT INTO example_table
SELECT * FROM temp;

7.4 ERROR 1045

Přístup odepřen pro uživatele

🔎 Příčina

  • Nedostatečná oprávnění DB
  • Nedostatečné oprávnění FILE
  • Nedostatečná oprávnění OS pro cestu

✅ Kontrola

SHOW GRANTS FOR 'user'@'localhost';

✅ Příklad požadovaných oprávnění

GRANT ALL PRIVILEGES ON example_db.* TO 'user'@'localhost';
FLUSH PRIVILEGES;

※ Buďte opatrní při udělování oprávnění FILE.

7.5 Zastaví se uprostřed u velkých souborů

🔎 Příčina

  • Časový limit
  • Nedostatek paměti
  • Limity PHP (phpMyAdmin)

✅ Nejrychlejší opatření

Zvětšení časových limitů
SET GLOBAL net_read_timeout=600;
SET GLOBAL net_write_timeout=600;
Rozdělení souboru
split -l 100000 large.csv part_

✔ Tok řešení chyb (nejrychlejší)

  1. Zkontrolujte kódování
  2. Zkontrolujte local_infile
  3. Zkontrolujte secure_file_priv
  4. Zkontrolujte oprávnění
  5. Zkontrolujte konce řádků ( \n / \r\n )

V tomto pořadí můžete vyřešit většinu problémů.

8. Praktické techniky pro velké datové sady (bezchybné operace)

Při importu stovek tisíc až milionů řádků,
běžné metody mohou být pomalé, zastavit se nebo selhat.

Zde jsou stabilní techniky běžně používané v produkci.

8.1 Rozdělení souboru a import po etapách

Nahrávání obrovských CSV/SQL najednou může způsobit problémy s pamětí a časovým limitem.

✔ Linux / Mac

split -l 100000 large.csv part_

→ Rozdělit na 100 000 řádků na část

✔ Windows (příklad PowerShell)

Get-Content large.csv -TotalCount 100000 > part_1.csv

✔ Výhody etapovaného importu

  • Snazší opakování po částečném selhání
  • Snazší určení místa chyby
  • Stabilnější zatížení serveru

8.2 Dočasné vypnutí indexů a cizích klíčů

Během importu se aktualizace indexů často stávají úzkým hrdlem.

✔ Dočasně vypnout indexy

ALTER TABLE example_table DISABLE KEYS;
-- LOAD DATA
ALTER TABLE example_table ENABLE KEYS;

※ Hlavně pro MyISAM. Omezený účinek pro InnoDB.

✔ Vypnout cizí klíče

SET FOREIGN_KEY_CHECKS=0;
-- import
SET FOREIGN_KEY_CHECKS=1;

8.3 Ovládání autocommit (zrychlení)

SET autocommit=0;
-- LOAD DATA
COMMIT;
SET autocommit=1;

8.4 Doporučená nastavení pro hromadné načítání

SET UNIQUE_CHECKS=0;
SET FOREIGN_KEY_CHECKS=0;
SET AUTOCOMMIT=0;

Po importu:

COMMIT;
SET UNIQUE_CHECKS=1;
SET FOREIGN_KEY_CHECKS=1;
SET AUTOCOMMIT=1;

⚠ Používejte opatrně v produkci.

8.5 Zvětšení časových limitů

SET GLOBAL net_read_timeout=600;
SET GLOBAL net_write_timeout=600;

8.6 Strategie staging tabulky (bezpečné operace)

Místo přímého importu do produkční tabulky použijte nejprve validační tabulku.

CREATE TABLE staging LIKE example_table;
LOAD DATA LOCAL INFILE 'file.csv' INTO TABLE staging;

Po validaci:

INSERT INTO example_table
SELECT * FROM staging;

✔ Nejstabilnější reálný vzor

  1. Načtěte do staging tabulky
  2. Zkontrolujte počet řádků
  3. Ověřte omezení
  4. Aplikujte do produkce
  5. Uložte logy

✔ Závěr pro velká data

  • Používejte CLI, kdykoli je to možné
  • Rozdělujte importy
  • Používejte staging
  • Dočasně vypínejte omezení
  • Kontrolujte logy

To zajistí stabilní importy i při milionech řádků.

9. FAQ (Časté otázky)

Zde jsou rychlé, praktické odpovědi na často vyhledávané otázky ohledně importu MySQL.

Q1. Mohu importovat jen konkrétní sloupce z CSV?

Ano, můžete.

Můžete mapovat nepotřebné sloupce na proměnnou (např. @dummy) a ignorovat je.

LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(id, @dummy, age);

Pokud chcete jen určité sloupce, ujistěte se, že explicitně specifikujete pořadí sloupců.

Q2. Jak zacházet s prázdnými buňkami jako NULL?

Použijte NULLIF().

LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(name, @age)
SET age = NULLIF(@age,'');

Tím se prázdné řetězce (“) převedou na NULL.

Q3. Jak přeskočit řádek s hlavičkou?

IGNORE 1 LINES

Příklad:

LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 LINES;

Q4. Jak mohu ověřit výsledky importu?

✔ Zkontrolujte počet řádků

SELECT COUNT(*) FROM example_table;

✔ Zkontrolujte varování/chyby

Zkontrolujte varování MySQL:

SHOW WARNINGS;

✔ Strategie staging tabulky (doporučeno)

Nejprve načtěte do staging tabulky a poté aplikujte na produkci.

Q5. Která metoda je nejrychlejší?

Závěr:

  • CSV → LOAD DATA LOCAL INFILE (nejrychlejší)
  • Obnova ze zálohy → mysql příkaz

GUI je pohodlné, ale CLI vítězí v rychlosti a stabilitě.

Q6. Dostávám chybu koncových znaků řádku ve Windows

Je to způsobeno koncovými znaky řádku.

Windows:

LINES TERMINATED BY '\r\n'

Linux / Mac:

LINES TERMINATED BY '\n'

Q7. Dostávám chybu secure_file_priv

Zkontrolujte:

SHOW VARIABLES LIKE 'secure_file_priv';

Oprava:

  • Umístěte CSV do povoleného adresáře
  • Nebo použijte LOCAL

✔ Shrnutí FAQ

  • Mapování sloupců → @dummy
  • Převod NULL → NULLIF
  • Přeskočit hlavičku → IGNORE 1 LINES
  • Rychlý import → LOAD DATA
  • Nejčastější „zaseknuté“ body → local_infile / secure_file_priv / kódování

10. Shrnutí

Importy MySQL mohou na první pohled vypadat složitě, ale jakmile jsou uspořádány podle cíle, jsou velmi přehledné.

Pojďme si shrnout nejkratší cesty k úspěchu.

✔ Obnovit SQL soubor (.sql)

Nejrychlejší a nejstabilnější:

mysql -u user -p dbname < backup.sql
  • Zkontrolujte, zda databáze existuje
  • Zkontrolujte oprávnění
  • Doporučujeme utf8mb4 pro kódování

✔ Import CSV (rychle)

Základní forma:

LOAD DATA LOCAL INFILE '/path/to/file.csv'
INTO TABLE table_name
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;

Klíčové body:

  • Konec řádku ve Windows → \r\n
  • Prázdné řetězce → NULLIF()
  • Pokud selže, zkontrolujte local_infile

✔ Pořadí kontrol při řešení problémů

  1. Kódování (doporučujeme utf8mb4)
  2. SHOW VARIABLES LIKE 'local_infile';
  3. SHOW VARIABLES LIKE 'secure_file_priv';
  4. Oprávnění (SHOW GRANTS)
  5. Konec řádku

V tomto pořadí můžete vyřešit většinu problémů.

✔ Zlatá pravidla pro velké datové sady

  • Používejte CLI
  • Rozdělujte importy
  • Procházejte přes staging tabulku
  • Dočasně vypněte cizí klíče/omezení
  • Kontrolujte logy

✔ Závěrečný závěr

  • Obnova ze zálohy → mysql příkaz
  • Rychlý CSV import → LOAD DATA LOCAL INFILE
  • Malé jednorázové úkoly → GUI

Pokud si nejste jisti, použití CLI je nejstabilnější volba.

S tímto máte nyní kompletní soubor znalostí pro importy MySQL.

Vyzkoušejte to ve svém prostředí a vytvořte stabilní provozní workflow.