KWALIFIKACJA INF3 - TEST WIEDZY NR 4

PYTANIE NR 31.
Załóż, że masz tabelę "Klienci" z kolumnami Id, Imię, Nazwisko i Email. Chcesz zaimportować dane z pliku CSV, który zawiera kolumny w innej kolejności. Które z poniższych poleceń jest poprawne do tego celu?
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
LOAD DATA INFILE służy w MySQL/MariaDB do ładowania danych z pliku do tabeli. Podanie listy kolumn w nawiasie pozwala przypisać pola z CSV do kolumn tabeli w zadanej kolejności, nawet gdy w pliku kolejność jest inna. Pozostałe propozycje nie są poprawną składnią importu CSV w tym silniku.

Pełne wyjaśnienie:

Polecenie LOAD DATA INFILE jest w MySQL/MariaDB standardowym mechanizmem szybkiego importu danych z pliku tekstowego (np. CSV) bez konieczności wykonywania wielu instrukcji INSERT. Kluczowe jest to, że po nazwie tabeli można podać listę kolumn w nawiasie, co umożliwia mapowanie pól z pliku na kolumny tabeli w określonej kolejności.

Dlatego zapis LOAD DATA INFILE 'file.csv' INTO TABLE Klienci (Imię, Nazwisko, Email, Id); realizuje cel zadania: nawet jeśli w tabeli kolejność jest (Id, Imię, Nazwisko, Email), to import może iść według kolejności występującej w pliku, o ile lista kolumn odpowiada kolejności pól w CSV.

Pozostałe propozycje są błędne z typowych powodów:

  • IMPORT INTO ... FROM – taka składnia nie jest poleceniem SQL MySQL/MariaDB do importu pliku CSV.
  • COPY ... FROM – polecenie COPY jest charakterystyczne dla PostgreSQL, a nie dla MySQL/MariaDB, więc w tym kontekście nie zadziała.
  • SELECT * FROM 'file.csv' INTO ...SELECT operuje na tabelach/widokach, a nie na plikach CSV traktowanych jak tabela; taki zapis nie stanowi poprawnego importu.

W praktyce przy imporcie CSV trzeba jeszcze pamiętać o parametrach formatu (separator pól, znak cudzysłowu, zakończenia linii, ewentualny nagłówek) oraz o kwestiach bezpieczeństwa: serwer bazy musi mieć dostęp do pliku, a niektóre instalacje ograniczają import ustawieniami typu secure_file_priv lub opcją LOCAL.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
LOAD DATA INFILE to polecenie (MySQL/MariaDB) do szybkiego wczytania danych z pliku tekstowego (np. CSV) bezpośrednio do tabeli. Stosuje się je przy masowych importach, bo jest wydajniejsze niż wiele instrukcji INSERT.
Podaj po nazwie tabeli listę kolumn w nawiasie w takiej kolejności, w jakiej występują pola w pliku. Dzięki temu silnik wie, do których kolumn ma przypisać kolejne wartości z wiersza CSV, niezależnie od kolejności kolumn w definicji tabeli.
COPY jest poleceniem typowym dla PostgreSQL. MySQL/MariaDB mają inne mechanizmy importu, np. LOAD DATA INFILE. To częsty błąd przy nauce kilku baz naraz: składnia wygląda podobnie, ale jest specyficzna dla danego DBMS.
W wariancie bez LOCAL plik jest czytany z systemu plików serwera, na którym działa baza danych. Wariant LOAD DATA LOCAL INFILE pozwala czytać plik od strony klienta, ale bywa ograniczony ustawieniami bezpieczeństwa.
W praktyce używa się klauzul określających format, np. separator pól i zakończenie linii. W MySQL robi się to przez sekcje typu FIELDS TERMINATED BY i LINES TERMINATED BY. Dzięki temu dopasujesz import do plików z przecinkami, średnikami lub innymi separatorami.
Najczęściej pomija się pierwszy wiersz podczas importu. W MySQL można to rozwiązać parametrem pomijającym określoną liczbę linii na początku pliku. Alternatywnie usuwa się nagłówek w edytorze/ETL przed importem, aby uniknąć błędów konwersji.
To zależy od konfiguracji serwera i trybu importu. Serwer musi mieć możliwość odczytu wskazanego pliku, a użytkownik bazy może potrzebować dodatkowych uprawnień administracyjnych. Często import jest też ograniczany ustawieniami bezpieczeństwa (np. do wskazanego katalogu).
INSERT bywa wygodny przy małej liczbie rekordów, walidacji danych w aplikacji lub gdy dane są generowane dynamicznie. Import z pliku jest korzystniejszy przy dużych wolumenach, migracjach i zasilaniu tabel danymi z eksportów, bo oszczędza czas i zasoby.
Typowe problemy to: zły separator (np. średnik zamiast przecinka), niezgodne kodowanie znaków (polskie litery), nieprawidłowe cudzysłowy w polach, dodatkowe spacje oraz zła kolejność/mapping kolumn. Często też występują błędy uprawnień do odczytu pliku.
Ćwicz na realnych plikach CSV: zmieniaj kolejność kolumn, separator, dodawaj nagłówek i sprawdzaj rezultaty w tabeli. Ucz się różnic między silnikami (MySQL vs PostgreSQL), bo wiele pułapek wynika z mylenia składni. Zwróć uwagę na bezpieczeństwo i prawa dostępu.
info

Około 48% zdających odpowiada poprawnie na to pytanie. trudne

Według specjalistów z branży: "LOAD DATA INFILE służy w MySQL/MariaDB do ładowania danych z pliku do tabeli."

Źródła:

  • MySQL 8.0 Reference Manual: "LOAD DATA [LOCAL] INFILE" (Syntax and description) https://dev.mysql.com/doc/refman/8.0/en/load-data.html - accessed 2026-03-04
  • MySQL 8.0 Reference Manual: "Security Issues with LOAD DATA LOCAL" https://dev.mysql.com/doc/refman/8.0/en/load-data-local-security.html - accessed 2026-03-04
  • PostgreSQL Documentation (current): "COPY" SQL Command https://www.postgresql.org/docs/current/sql-copy.html - accessed 2026-03-04

Materiały:

  • Dokumentacja polecenia LOAD DATA INFILE dla używanego silnika bazy danych
  • Materiały o bezpieczeństwie importu plików (uprawnienia, LOCAL INFILE, secure_file_priv)
  • Ćwiczenia praktyczne: import CSV z różnymi separatorami i nagłówkiem

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego