Уяви, що тобі прислали CSV-файл з інформацією про студентів, наприклад, з іншої бази даних або стороннього застосунку. Копіювати кожен запис вручну? Та ну, дякую. Ось тут і виникає потреба у масовому завантаженні даних.
Ось кілька сценаріїв, де масове завантаження даних реально рятує:
- Міграція даних: треба перенести дані з однієї системи в іншу. Наприклад, з Excel або іншої бази даних у PostgreSQL.
- Ініціалізація бази даних: наповнення твоєї бази стартовими даними, наприклад, список міст, курсів чи категорій продуктів.
- Інтеграція з зовнішніми системами: регулярне додавання нових даних, наприклад, оновлення даних від третіх осіб через файл.
- Оновлення великих обсягів даних: треба замінити застарілі дані на оновлені.
Поки що все зрозуміло? Якщо так, рухаємося далі!
Основні підходи до масового завантаження даних
Перш ніж занурюватися в деталі, давай коротко обговоримо, які взагалі є способи додати в базу не один-два рядки, а одразу багато. Ми розглянемо, як це можна зробити за допомогою SQL-запитів, а потім подивимось на більш зручний і сучасний спосіб — завантаження даних з файлів.
SQL-запити для вставки даних
Ти вже знаєш, що для додавання даних використовується команда INSERT INTO. Це чудово працює, якщо записів небагато. Наприклад:
INSERT INTO students (id, name, age, course)
VALUES (1, 'Otto Lin', 20, 'Програмування');
Але якщо мова йде про десятки, сотні чи тисячі рядків, такий спосіб стає неефективним. Звісно, це можна автоматизувати на рівні коду, але вручну підтримувати такий обсяг вставок складно і незручно.
Завантаження з файлів
Саме тому часто використовують завантаження даних з файлів, таких як CSV (Comma-Separated Values). Це простий текстовий формат, у якому кожен рядок — це окремий запис, а значення розділені комами або крапками з комою.
Приклад вмісту CSV-файлу:
id,name,age,course
1,Otto Lin,20,Програмування
2,Maria Chi,21,Дизайн
3,Alex Ming,19,Математика
Такий формат добре читається як людиною, так і програмами. CSV можна відкрити в Excel, обробити в Python чи іншій мові, і без проблем імпортувати в базу. Масове завантаження даних з файлу відбувається значно швидше порівняно з ручною вставкою і зменшує ймовірність помилок при введенні.
Підготовка до масового завантаження
Секрет успішного завантаження — у підготовці. Ми підготуємо базу даних для прийому даних, перевіримо відповідність структури і дані на коректність.
Перевірка структури таблиць
Передусім переконайся, що у твоїй базі даних є таблиця, яка відповідає структурі файлу. Наприклад, якщо ти завантажуєш студентів, у тебе має бути таблиця з відповідними стовпцями.
Приклад таблиці для завантаження даних про студентів:
CREATE TABLE students (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER NOT NULL,
course TEXT
);
Важливі моменти:
- Переконайся, що типи даних у стовпцях збігаються з даними у твоєму файлі. Якщо
age— це число, то в CSV у відповідному стовпці теж мають бути лише числа. - Стовпці з обмеженнями (
NOT NULL,UNIQUE) вимагають особливої уважності при підготовці даних.
Перевірка даних
Тепер коротко про дані. Ось що треба перевірити перед завантаженням:
- Відсутність порожніх рядків або некоректних значень. Наприклад, рядок:
12,,20,Програмуваннявикличе помилку, бо у насname— це обов'язкове поле.
Відповідність роздільників. Якщо у твоєму CSV використовується кома (
,), переконайся, що вона налаштована правильно. Якщо замість ком використані крапки з комою (;), це треба вказати при завантаженні даних.Кодування. PostgreSQL очікує файли у UTF-8. Якщо твій файл в іншому кодуванні (наприклад, Windows-1251), його треба перетворити.
Маленький програмістський жарт для розвантаження
Чому програмісти так люблять використовувати CSV? Бо після довгих годин роботи з JSON, вони нарешті бачать "простi" дані... поки не зустрінуть кому в тексті.
Практичне застосування масового завантаження
У реальних проектах масове завантаження використовується всюди. Наприклад:
- Під час оновлення каталогу товарів для інтернет-магазину. CSV-файл з тисячами товарів можна завантажити за секунди.
- Під час міграції клієнтів з однієї CRM-системи в іншу. Всі дані про клієнтів, їх адреси та замовлення завантажуються з CSV у PostgreSQL.
- В аналітиці, коли треба завантажити дані про продажі за місяць для аналізу.
Тепер, коли ти розумієш, навіщо це потрібно і як до цього підготуватися, можемо рухатися далі до конкретних інструментів завантаження даних, таких як команда COPY. Але про це в наступній лекції.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ