SQL
Wprowadzanie danych do bazy (INSERT, import z pliku)
Ręczne rekordy, import CSV/SQL, automatyzacja — INF.03
Teoria Ręczne i automatyczne wprowadzanie danych
- INSERT – najprostszy sposób ręcznego wstawienia rekordu (pojedynczego lub wielu naraz).
- Dane można wprowadzać przez konsolę SQL, phpMyAdmin, narzędzia GUI lub skrypty.
- Import z pliku CSV – szybkie ładowanie wielu rekordów (np. z Excela) przy użyciu LOAD DATA lub kreatora importu.
- Import z pliku .sql – wykonanie gotowego skryptu z CREATE/INSERT (backup, gotowe przykładowe dane).
- Przed importem warto sprawdzić zgodność kolejności kolumn i separatorów z definicją tabeli.
W INF.03 ważne jest, aby umieć zarówno dodać pojedynczy rekord, jak i szybko załadować setki wpisów z pliku.
Ćwiczenie 1 Ręczne INSERT – dodawanie rekordów
Zadanie: Dodaj 3 uczniów do tabeli
uczniowie jednym poleceniem INSERT.
- Wstaw trzy wiersze w jednym INSERT (wiele list VALUES).
- Upewnij się, że kolumny zgadzają się z definicją tabeli.
INSERT INTO uczniowie (imie, nazwisko, klasa_id) VALUES
('Adam', 'Nowak', 1),
('Ewa', 'Kowalska', 1),
('Tomasz', 'Borek', 2);
Ćwiczenie 2 Import danych z pliku CSV
Zadanie: Przygotuj plik
uczniowie.csv z danymi uczniów i zaimportuj go do tabeli uczniowie.
- Każda linia w pliku to jeden rekord.
- Pola oddzielone przecinkami lub średnikami.
- Brak nagłówka lub odpowiednia opcja w narzędziu importu.
# Plik uczniowie.csv (bez nagłówka): Adam,Nowak,1 Ewa,Kowalska,1 Tomasz,Borek,2 # Import przez phpMyAdmin: # 1. Wybierz bazę i tabelę uczniowie → zakładka "Import". # 2. Wskaż plik uczniowie.csv. # 3. Ustaw format: CSV, separator pól: przecinek (,), separator linii: \n. # 4. W razie potrzeby zaznacz pomijanie pierwszej linii (gdy jest nagłówek). # 5. Kliknij "Importuj". # Import przez konsolę MySQL: LOAD DATA INFILE '/sciezka/uczniowie.csv' INTO TABLE uczniowie FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (imie, nazwisko, klasa_id);
Ćwiczenie 3 Import sekwencji INSERT z pliku .sql
Zadanie: Utwórz plik
przyklad_bazy.sql z definicją kilku klas i uczniów, a następnie zaimportuj go do bazy szkola.
- Plik .sql może zawierać CREATE TABLE i INSERT.
- Import polega na wykonaniu pliku przez serwer SQL.
-- Plik przyklad_bazy.sql:
INSERT INTO klasy (nazwa) VALUES ('1A'), ('2A');
INSERT INTO uczniowie (imie, nazwisko, klasa_id) VALUES
('Jan', 'Kowal', 1),
('Agnieszka', 'Lis', 1),
('Dawid', 'Mik', 2);
-- Import z konsoli:
mysql -u root -p szkola < przyklad_bazy.sql
Ćwiczenie 4 Automatyzacja: szybki załadunek 1000 rekordów
Zadanie: Wygeneruj plik CSV z 1000 rekordów (np. w Pythonie lub Excelu) i załaduj go do tabeli
uczniowie.
- Przy generowaniu danych zachowaj spójność typów (np. numery klas).
- Użyj LOAD DATA lub kreatora importu w phpMyAdmin.
- Po imporcie policz liczbę rekordów (SELECT COUNT(*)).
# Przykładowy skrypt Python generujący uczniowie1000.csv
import csv
with open('uczniowie1000.csv', 'w', newline='', encoding='utf-8') as f:
w = csv.writer(f)
for i in range(1000):
imie = f"Imie{i+1}"
nazwisko = f"Nazwisko{i+1}"
klasa_id = (i % 4) + 1 # klasy 1..4
w.writerow([imie, nazwisko, klasa_id])
# Import do MySQL jak w ćwiczeniu 2
LOAD DATA INFILE '/sciezka/uczniowie1000.csv'
INTO TABLE uczniowie
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(imie, nazwisko, klasa_id);
-- Sprawdzenie:
SELECT COUNT(*) FROM uczniowie;
Ćwiczenie 5 Import z nagłówkiem i różną kolejnością kolumn
Zadanie: Masz plik
klienci.csv z nagłówkiem: email;imie;nazwisko.
Tabela w bazie ma kolumny: id, imie, nazwisko, email.
Pokaż, jak skonfigurować import, aby dane trafiły w dobre kolumny.
- Ustaw separator na średnik (;).
- Pomiń pierwszą linię (nagłówek).
- W LOAD DATA wskaż kolejność kolumn zgodnie z plikiem.
# Plik klienci.csv: email;imie;nazwisko jan.nowak@example.com;Jan;Nowak anna.kowalska@example.com;Anna;Kowalska # Import przez LOAD DATA: LOAD DATA INFILE '/sciezka/klienci.csv' INTO TABLE klienci FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n' IGNORE 1 LINES (email, imie, nazwisko);
Zadanie INF.03 „Dziennik ocen” – zasilenie bazy z plików
Opis: Masz bazę
szkola z tabelami: uczniowie(id, imie, nazwisko, klasa_id), klasy(id, nazwa), oceny(id, uczen_id, przedmiot, ocena).
Do dyspozycji są 3 pliki:
klasy.csv– nazwy klas,uczniowie.csv– imię, nazwisko, nazwa klasy,oceny.sql– INSERT-y z ocenami.
- Zaimportuj
klasy.csvdo tabeliklasy. - Zaimportuj
uczniowie.csvdo tymczasowej tabeli i przypiszklasa_idna podstawie nazwy klasy. - Wykonaj skrypt
oceny.sql, aby uzupełnić oceny.
-- 1. Import klas (plik klasy.csv: tylko kolumna nazwa)
LOAD DATA INFILE '/sciezka/klasy.csv'
INTO TABLE klasy
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(nazwa);
-- 2. Tymczasowa tabela na uczniów z nazwą klasy
CREATE TABLE tmp_uczniowie (
imie VARCHAR(30),
nazwisko VARCHAR(40),
nazwa_klasy VARCHAR(12)
);
LOAD DATA INFILE '/sciezka/uczniowie.csv'
INTO TABLE tmp_uczniowie
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(imie, nazwisko, nazwa_klasy);
-- Przeniesienie danych do właściwej tabeli z wyznaczeniem klasa_id:
INSERT INTO uczniowie (imie, nazwisko, klasa_id)
SELECT t.imie,
t.nazwisko,
k.id
FROM tmp_uczniowie t
JOIN klasy k ON t.nazwa_klasy = k.nazwa;
DROP TABLE tmp_uczniowie;
-- 3. Import ocen z pliku oceny.sql:
mysql -u root -p szkola < oceny.sql
Quiz Sprawdź wiedzę o importach!
- Jak dodać jeden rekord do bazy przy użyciu SQL?
- Jaka jest zaleta importu CSV w porównaniu z ręcznym wprowadzaniem danych?
- Czym różni się plik .sql od .csv w kontekście bazy danych?
- Jak szybko załadować duże ilości danych do tabeli w MySQL?
- Dlaczego ważne jest dopasowanie kolejności kolumn pliku do tabeli?
- Za pomocą polecenia
INSERT INTO tabela (kolumny) VALUES (wartości);. - Pozwala szybko wczytać setki lub tysiące rekordów bez ręcznego wpisywania każdego z nich.
- Plik .sql zawiera polecenia (np. CREATE, INSERT), a .csv przechowuje same dane w formacie tabelarycznym.
- Używając polecenia
LOAD DATA INFILElub kreatora importu w narzędziach takich jak phpMyAdmin. - Bo błędne dopasowanie spowoduje, że dane trafią do niewłaściwych kolumn lub import się nie powiedzie.
Checklista Sprawdź umiejętności
- Wprowadzam ręcznie dane do tabel za pomocą INSERT (pojedyncze i wiele wierszy naraz).
- Importuję dane z plików CSV, poprawnie ustawiając separatory i nagłówki.
- Wykonuję skrypty .sql, aby odtworzyć lub zasilić bazę danych.
- Potrafię zautomatyzować załadunek dużych plików oraz zweryfikować wynik importu.
Materiały: INF.03 — Wprowadzanie i import danych · Autor: Tomasz Puchała © 2025