CodeGym /Kursy /SQL SELF /Wprowadzenie do masowego ładowania danych

Wprowadzenie do masowego ładowania danych

SQL SELF
Poziom 23 , Lekcja 0
Dostępny

Wyobraź sobie, że ktoś wysłał ci plik CSV z informacjami o studentach, na przykład z innej bazy danych albo zewnętrznej aplikacji. Ręcznie kopiować każdy rekord? No way, dzięki. I właśnie tu pojawia się potrzeba masowego ładowania danych.

Oto kilka sytuacji, gdzie masowe ładowanie danych ratuje ci skórę:

  • Migracja danych: trzeba przenieść dane z jednego systemu do drugiego. Na przykład z Excela albo innej bazy do PostgreSQL.
  • Inicjalizacja bazy danych: wypełnienie bazy danymi startowymi, np. listą miast, kursów albo kategorii produktów.
  • Integracja z zewnętrznymi systemami: regularne dodawanie nowych danych, np. aktualizacja danych od firm trzecich przez plik.
  • Aktualizacja dużych ilości danych: trzeba podmienić stare dane na nowe.

Wszystko jasne? Jeśli tak, lecimy dalej!

Podstawowe podejścia do masowego ładowania danych

Zanim wejdziemy w szczegóły, pogadajmy krótko, jakie w ogóle są opcje wrzucenia do bazy nie jednej czy dwóch, ale od razu wielu linijek. Przejdziemy przez to, jak można to zrobić za pomocą SQL, a potem zobaczymy wygodniejszy i nowocześniejszy sposób — ładowanie danych z plików.

SQL-zapytania do wstawiania danych

Pewnie już wiesz, że do dodawania danych używa się komendy INSERT INTO. To działa spoko, jeśli rekordów jest mało. Na przykład:

INSERT INTO students (id, name, age, course)
VALUES (1, 'Otto Lin', 20, 'Programowanie');

Ale jeśli mówimy o dziesiątkach, setkach czy tysiącach wierszy, taki sposób robi się nieefektywny. Jasne, można to zautomatyzować w kodzie, ale ręcznie ogarniać taki wolumen to masakra i strata czasu.

Ładowanie z plików

Właśnie dlatego często używa się ładowania danych z plików, takich jak CSV (Comma-Separated Values). To prosty format tekstowy, gdzie każda linia to osobny rekord, a wartości są oddzielone przecinkami albo średnikami.

Przykład zawartości pliku CSV:

id,name,age,course
1,Otto Lin,20,Programowanie
2,Maria Chi,21,Dizajn
3,Alex Ming,19,Matematyka

Taki format jest czytelny zarówno dla ludzi, jak i programów. CSV otworzysz w Excelu, obrobisz w Pythonie albo innym języku i bez problemu załadujesz do bazy. Masowe ładowanie danych z pliku jest dużo szybsze niż ręczne wstawianie i zmniejsza ryzyko błędów przy wpisywaniu.

Przygotowanie do masowego ładowania

Sekret sukcesu to przygotowanie. Przygotujemy bazę na przyjęcie danych, sprawdzimy zgodność struktury i poprawność danych.

Sprawdzanie struktury tabel

Najpierw upewnij się, że w twojej bazie jest tabela, która pasuje do struktury pliku. Na przykład, jeśli ładujesz studentów, musisz mieć tabelę z odpowiednimi kolumnami.

Przykład tabeli do ładowania danych o studentach:

CREATE TABLE students (
    id SERIAL PRIMARY KEY,
    name TEXT NOT NULL,
    age INTEGER NOT NULL,
    course TEXT
);

Ważne rzeczy:

  • Upewnij się, że typy danych w kolumnach zgadzają się z danymi w pliku. Jeśli age to liczba, to w CSV w tej kolumnie też muszą być tylko liczby.
  • Kolumny z ograniczeniami (NOT NULL, UNIQUE) wymagają szczególnej uwagi przy przygotowaniu danych.

Sprawdzanie danych

Teraz krótko o danych. Oto co trzeba sprawdzić przed ładowaniem:

  1. Brak pustych wierszy lub niepoprawnych wartości. Na przykład linia: 12,,20,Programowanie wywali błąd, bo name to pole obowiązkowe.
  1. Zgodność separatorów. Jeśli w twoim CSV jest przecinek (,), upewnij się, że jest to poprawnie ustawione. Jeśli zamiast przecinków są średniki (;), trzeba to wskazać przy ładowaniu danych.

  2. Kodowanie. PostgreSQL oczekuje plików w UTF-8. Jeśli twój plik jest w innym kodowaniu (np. Windows-1251), trzeba go przekonwertować.

Mały żart programistyczny na rozluźnienie

Dlaczego programiści tak lubią CSV? Bo po godzinach walki z JSON-em w końcu widzą "proste" dane... dopóki nie trafią na przecinek w tekście.

Praktyczne zastosowanie masowego ładowania

W prawdziwych projektach masowe ładowanie jest na porządku dziennym. Na przykład:

  • Przy aktualizacji katalogu produktów w sklepie internetowym. Plik CSV z tysiącami produktów można wrzucić w kilka sekund.
  • Przy migracji klientów z jednego systemu CRM do drugiego. Wszystkie dane o klientach, ich adresach i zamówieniach ładuje się z CSV do PostgreSQL.
  • W analizie danych, gdzie trzeba załadować dane o sprzedaży za miesiąc do analizy.

Teraz, kiedy już wiesz po co to wszystko i jak się przygotować, możemy przejść dalej do konkretnych narzędzi ładowania danych, takich jak komenda COPY. Ale o tym pogadamy w kolejnym wykładzie.

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION