KWALIFIKACJA INF3 - TEST WIEDZY NR 3

PYTANIE NR 28.
Które z poniższych poleceń jest poprawne do zaimportowania danych z pliku CSV, który zawiera nagłówki kolumn?
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
LOAD DATA INFILE to poprawna składnia MySQL/MariaDB do masowego importu danych z pliku. Gdy plik CSV ma nagłówki, stosuje się pominięcie pierwszego wiersza przez IGNORE 1 LINES, aby nie próbować wstawić nazw kolumn jako danych. Pozostałe propozycje nie są prawidłowymi poleceniami MySQL.

Pełne wyjaśnienie:

W MySQL/MariaDB standardowym sposobem szybkiego załadowania danych z pliku tekstowego (w tym CSV) do tabeli jest polecenie LOAD DATA INFILE. Pozwala ono importować wiele rekordów w jednym kroku, bez ręcznego wykonywania wielu instrukcji INSERT.

Jeżeli plik CSV zawiera nagłówki kolumn w pierwszym wierszu, to ten wiersz nie jest danymi i nie powinien trafić do tabeli. Właśnie temu służy fragment IGNORE 1 LINES — informuje serwer, aby pominąć pierwszy wiersz wejścia.

Dlaczego pozostałe opcje są niepoprawne w kontekście MySQL/MariaDB:

  • IMPORT INTO ... — taka instrukcja nie jest standardową komendą SQL w MySQL; wygląda "intuicyjnie", ale jest składniowo fikcyjna.
  • COPY ... WITH HEADER — polecenie COPY jest charakterystyczne dla PostgreSQL. W MySQL nie działa w tej postaci, więc nie jest poprawną odpowiedzią, jeśli pytanie dotyczy komend typu LOAD DATA.
  • SELECT * FROM 'file.csv' INTO ... — SELECT działa na tabelach/widokach, a nie na plikach CSV podanych jako literał. Taka składnia nie opisuje realnego importu CSV do tabeli.

W praktyce przy imporcie warto pamiętać, że LOAD DATA INFILE bywa ograniczone konfiguracją serwera (np. lokalizacja pliku, uprawnienia, tryb bezpiecznego importu). Na egzaminie kluczowe jest jednak rozpoznanie mechanizmu: import pliku + pominięcie nagłówka.

LOAD DATA INFILE 'file.csv'
INTO TABLE table_name
IGNORE 1 LINES;

Dodatkowe pytania

Dodatkowe pytania (FAQ):
LOAD DATA INFILE to instrukcja MySQL/MariaDB do masowego wczytania danych z pliku tekstowego (np. CSV) bez wykonywania wielu INSERT. Jest używana do szybkiego importu danych do tabeli, szczególnie przy dużej liczbie wierszy.
Nagłówek pomija się przez dodanie IGNORE 1 LINES. Oznacza to, że pierwszy wiersz pliku (zwykle nazwy kolumn) nie zostanie potraktowany jako dane do wstawienia do tabeli.
COPY jest poleceniem typowym dla PostgreSQL, a nie dla MySQL. W MySQL do importu pliku używa się głównie LOAD DATA INFILE. Na egzaminie trzeba rozpoznać, do którego DBMS należy dana składnia.
Zwykle tak, bo import jest realizowany jako operacja wsadowa, a nie setki/tysiące osobnych zapytań. W praktyce oszczędza to narzut komunikacji i parsowania. Dokładna szybkość zależy od konfiguracji serwera i indeksów w tabeli.
Najczęstsze problemy to: niepominięty nagłówek, zły separator pól, inny znak cudzysłowu, różne kodowanie (np. UTF-8 vs ANSI) oraz niedopasowanie typów kolumn. W zadaniach testowych często sprawdza się właśnie pominięcie pierwszej linii.
Często tak, bo CSV może używać różnych separatorów i znaków otaczających tekst. W pełnej wersji komendy doprecyzowuje się zwykle FIELDS TERMINATED BY oraz ENCLOSED BY. W prostych pytaniach egzaminacyjnych bywa testowany tylko element pominięcia nagłówka.
Stosuje się je, gdy pierwszy wiersz pliku nie jest rekordem danych, tylko opisem kolumn (nagłówkiem). Dzięki temu baza nie próbuje wstawić tekstów typu "id,nazwa,cena" do kolumn tabeli, co zwykle kończy się błędami typów danych.
W klasycznym SQL SELECT działa na obiektach bazy (tabele, widoki), a nie na plikach CSV podanych jako nazwa w apostrofach. Do wczytywania plików używa się mechanizmów importu (np. LOAD DATA INFILE) albo narzędzi zewnętrznych.
Wskazówką są charakterystyczne polecenia: MySQL/MariaDB często używa LOAD DATA INFILE, a PostgreSQL COPY oraz składni WITH (FORMAT csv, HEADER). Jeśli w odpowiedziach pojawia się tylko jedno polecenie typowe dla danego DBMS, zwykle ono jest kluczowe.
Warto przećwiczyć podstawowe polecenia importu/eksportu dla najczęściej omawianych DBMS, poznać opcje pomijania nagłówka i ustalania separatora oraz umieć wskazać, które komendy są fikcyjne. Pomaga też porównanie MySQL (LOAD DATA) i PostgreSQL (COPY).
info

Statystycznie 49% uczniów zna prawidłową odpowiedź. trudne

W praktyce zawodowej kluczowe jest to, że lOAD DATA INFILE to poprawna składnia MySQL/MariaDB do masowego importu danych z pliku.

Źródła:

  • MySQL 8.0 Reference Manual: "LOAD DATA [LOCAL] INFILE Statement" https://dev.mysql.com/doc/refman/8.0/en/load-data.html - accessed 2026-02-28
  • MariaDB Knowledge Base: "LOAD DATA INFILE" https://mariadb.com/kb/en/load-data-infile/ - accessed 2026-02-28
  • PostgreSQL Documentation: "COPY" https://www.postgresql.org/docs/current/sql-copy.html - accessed 2026-02-28

Materiały:

  • Dokumentacja MySQL/MariaDB: polecenie LOAD DATA i jego opcje
  • Dokumentacja PostgreSQL: polecenie COPY (dla porównania różnic DBMS)
  • Materiały do INF.3 z zakresu baz danych: import/eksport danych, uprawnienia serwera DB

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego