🎯 Cele lekcji

📤

1. Eksport — mysqldump

# Eksport całej bazy danych
mysqldump -u root -p sklep > backup_sklep.sql

# Eksport tylko struktury (bez danych)
mysqldump -u root -p --no-data sklep > struktura.sql

# Eksport tylko danych (bez struktury)
mysqldump -u root -p --no-create-info sklep > dane.sql

# Eksport konkretnej tabeli
mysqldump -u root -p sklep produkty > produkty.sql

# Eksport kilku tabel
mysqldump -u root -p sklep klienci zamowienia > klienci_zam.sql

# Eksport wszystkich baz danych
mysqldump -u root -p --all-databases > wszystkie_bazy.sql

# Eksport z kompresją
mysqldump -u root -p sklep | gzip > backup_sklep.sql.gz
Opcja --no-data eksportuje tylko strukturę tabel (CREATE TABLE), bez żadnych danych (INSERT). Przydatne do dokumentacji schematu lub tworzenia nowej instalacji.
📥

2. Import z pliku .sql

# Import do istniejącej bazy
mysql -u root -p sklep < backup_sklep.sql

# Import z pliku skompresowanego
gunzip < backup_sklep.sql.gz | mysql -u root -p sklep

# Import z wyświetlaniem postępu (pv — pipe viewer)
pv backup_sklep.sql | mysql -u root -p sklep

# Import wewnątrz klienta MySQL
mysql> USE sklep;
mysql> SOURCE /ścieżka/do/backup_sklep.sql
Przed importem upewnij się, że baza docelowa istnieje: CREATE DATABASE IF NOT EXISTS sklep;. Plik .sql wygenerowany przez mysqldump zawiera polecenia tworzące tabele i wstawiające dane — wykonuje się sekwencyjnie.
📊

3. Import z CSV — LOAD DATA INFILE

-- Import z pliku CSV do tabeli
LOAD DATA INFILE '/tmp/produkty.csv'
INTO TABLE produkty
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS         -- pomiń wiersz nagłówkowy
(nazwa, cena, ilosc_mag);  -- kolejność kolumn w pliku

-- Import z transformacją danych
LOAD DATA INFILE '/tmp/data.csv'
INTO TABLE produkty
FIELDS TERMINATED BY ';'
LINES TERMINATED BY '\r\n'  -- Windows line ending
(nazwa, @cena_str, ilosc)
SET cena = REPLACE(@cena_str, ',', '.');  -- zamień przecinek na kropkę

-- Eksport do pliku CSV
SELECT id_produktu, nazwa, cena
FROM produkty
INTO OUTFILE '/tmp/produkty_export.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';
🖥️

4. Import/eksport przez phpMyAdmin

OperacjaŚcieżka w phpMyAdminDostępne formaty
Eksport bazyWybierz bazę → zakładka "Eksport"SQL, CSV, Excel, JSON, XML
Import do bazyWybierz bazę → zakładka "Import"SQL, CSV, XML, JSON
Eksport tabeliWybierz tabelę → zakładka "Eksport"SQL, CSV, Excel, JSON
Szybki eksportStrona główna → Eksport → "Szybki"SQL (gotowe domyślne ustawienia)
phpMyAdmin oferuje tryb eksportu "Szybki" (domyślne ustawienia) i "Niestandardowy" (pełna kontrola: zakres tabel, kodowanie, kompresja, format wyjścia). Do backupów produkcyjnych używaj mysqldump przez linię komend.
✏️

Zadania interaktywne

Zadanie 1Quiz: opcja --no-data w mysqldump

Która opcja polecenia mysqldump eksportuje TYLKO strukturę tabel (bez zawartości)?

  • --no-create-info
  • --structure-only
  • --no-data
  • --skip-data
Zadanie 2Dopasuj narzędzie do zadania
Backup całej bazy z linii komend (skrypt automatyczny)
Import arkusza Excel zapisanego jako CSV do tabeli MySQL
Eksport wyników zapytania do pliku tekstowego na serwerze
Zadanie 3Uzupełnij polecenie LOAD DATA

Uzupełnij brakujące słowo kluczowe w poleceniu importującym CSV (pola oddzielone średnikiem, pomijamy wiersz nagłówkowy):

LOAD DATA INFILE '/tmp/dane.csv'
INTO TABLE klienci
FIELDS TERMINATED BY ';'
___ 1 ROWS;
  • SKIP
  • IGNORE
  • HEADER
  • OFFSET

📌 Zapamiętaj