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
ageto 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:
- Brak pustych wierszy lub niepoprawnych wartości. Na przykład linia:
12,,20,Programowaniewywali błąd, bonameto pole obowiązkowe.
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.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.
GO TO FULL VERSION