← Назад до блогу

Імпорт CSV у n8n: вправа з валідації та звіряння

Попрактикуйте імпорт CSV у n8n: збережіть початкові нулі в ідентифікаторах, класифікуйте відхилені записи та звірте кількість перед записом у Data Table.

Рука тримає нитку намистин над лотками для сортування поруч зі складеним аркушем для імпорту CSV у n8n.

Перевірено за наведеними джерелами .

Завдання та передумови імпорту CSV у n8n

Тимчасова шухляда для зберігання, паперовий файл і пристрій надсилання уособлюють передумови вправи з CSV.
Окреме сховище та синтетичні вхідні дані визначають робочий простір вправи.

Ця редакційна вправа пропонує спроєктувати імпорт CSV у n8n, який зберігає ідентифікатори без змін, враховує відхилені записи та перевіряє збережені результати. Запропонований робочий процес і критерії завершення не були виконані чи перевірені. Завдання завершено, коли кожен вхідний запис належить рівно до однієї категорії, а збережені записи відповідають прийнятим.

Підготуйте робочий простір n8n, інструмент для надсилання CSV через HTTP та порожню тимчасову Data Table. Створіть стовпці типу String із назвами customer_id, name та email. Документація n8n описує типізовані стовпці Data Table, зокрема String. Data Tables — це сховище в межах проєкту для невеликих і помірних обсягів використання; ці джерела не встановлюють універсальної мінімальної версії чи доступності всієї вправи на певному тарифному плані.

Використовуйте лише синтетичні записи. На нашу думку, тимчасове сховище робить цю практику кориснішою: воно дає змогу зосередитися на поясненні долі кожного запису, перш ніж визначати поведінку спільного імпорту.

Sources: n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.datatable/tables.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/get-started/key-concept-glossary.md at main · n8n-io/n8n-docs · GitHub

Отримайте CSV-файл у n8n і перевірте ідентифікатори

Лупа охоплює дві однакові нитки намистин для перевірки ідентифікаторів CSV.
Порівняйте ідентифікатори одразу після розбору, перш ніж пропускати записи далі.

Створіть CSV із наведеними нижче заголовками та точними значеннями, замінивши кожну клітинку «Порожньо» порожнім полем CSV. Цей запропонований тестовий набір містить п’ять записів даних; заголовок до кількості не входить. Сприймайте customer_id як точний ідентифікатор і вимагайте, щоб усі три поля містили текст, який не складається лише з пробільних символів. Перевірка формату електронної адреси виходить за межі цієї вправи.

Запропонований синтетичний набір CSV; «Порожньо» означає порожнє поле.
customer_idnameemail
00127Adaada@example.invalid
00420Benben@example.invalid
00127Ada repeatrepeat@example.invalid
00009Порожньоmissing@example.invalid
ПорожньоCycy@example.invalid

Налаштуйте Webhook для отримання двійкових даних, а потім під’єднайте Extract From File з витягуванням даних із CSV. Узгодьте назву двійкової властивості, у яку Webhook отримує дані, із вхідним полем вузла витягування. Для тестової URL-адреси виберіть Listen for test event перед надсиланням CSV-файлу в n8n; робочий режим використовує окрему URL-адресу та потребує публікації.

Одразу порівняйте розібрані значення customer_id з оригінальним CSV. Наведена документація з витягування CSV не встановлює, чи зберігаються ідентифікатори, схожі на числа, і яке налаштування парсера це гарантує. Зупиніться, якщо 00127 перетворюється на 127. Стовпець типу String або пізніше перетворення не відновлять втрачені символи; виправте отримання даних, перш ніж продовжувати.

Sources: Extract From File | Nodes | n8n Docs, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.webhook/README.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.webhook/common-issues.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.datatable/tables.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.set.md at main · n8n-io/n8n-docs · GitHub

Класифікуйте записи та звірте їх перед завантаженням

Паперові записи розкладено в окремі лотки для прийнятих і некоректних записів CSV та дублікатів.
Три лотки уособлюють взаємовиключні категорії, збережені для звіряння.

Після успішної перевірки ідентифікаторів використайте Edit Fields для явного зіставлення полів і за потреби відкиньте невикористані поля. Документація n8n описує власний JavaScript у вузлі Code та умовне розгалуження через If. Наведений нижче алгоритм імпорту CSV у n8n — це редакційна пропозиція, яку вам потрібно реалізувати й перевірити.

Зберігайте масиви accepted, invalid і duplicate разом зі зведенням в одному вихідному елементі Code. Збережіть початкові значення полів та індекс запису в джерелі й додайте причини відхилення. Дотримуйтеся наведеного порядку, щоб кожен запис належав рівно до однієї категорії; враховуйте задокументовані вимоги n8n до зв’язування елементів, коли кількість вхідних і вихідних елементів відрізняється.

  1. Ініціалізуйте порожні масиви категорій і множину прийнятих значень customer_id.
  2. Перевіряйте кожен запис у порядку джерела; спочатку класифікуйте записи без обов’язкових значень як некоректні.
  3. Для коректного запису класифікуйте вже відомий customer_id як дублікат; інакше прийміть запис і запам’ятайте його ідентифікатор.
  4. Обчисліть кількість записів у категоріях і поверніть масиви разом зі зведенням, навіть якщо accepted порожній.

Для цього набору очікуваний результат за запропонованими правилами — п’ять вхідних записів: два прийняті, два некоректні та один дублікат. Перед Insert використайте If, щоб перевірити рівність: кількість вхідних записів = кількість прийнятих + кількість некоректних + кількість дублікатів. Спрямуйте невідповідність до Stop And Error; лише гілка з правильною рівністю може перейти до вставлення. Перевірте додатковий набір, у якому всі записи некоректні: збережіть масиви відхилених записів і зведення та пропустіть вставлення, якщо accepted порожній.

Після переробки в n8n 1.64.0 документація Remove Duplicates описує видалення дублікатів у поточних вхідних даних за вибраними полями; для попередніх версій потрібна відповідна документація. Вона описує видалення, а не окремий вихід із відхиленими дублікатами. На нашу думку, явна класифікація тут краще підходить для навчання, оскільки вправа вимагає пояснити відхилені записи.

Sources: n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.set.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.if.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/reusable-content/.gitbook/includes/integrations/builtin/core-nodes/code-node.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.removeduplicates/README.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.stopanderror.md at main · n8n-io/n8n-docs · GitHub

Завершіть імпорт у n8n Data Table та осмисліть результат

Рука порівнює жетони з відкритої шухляди та еталонного лотка для перевірки повторного зчитування Data Table.
Перевірки повторного зчитування порівнюють вміст сховища з прийнятими записами.

У цьому імпорті до n8n Data Table записи CSV мають пройти перевірку перед завантаженням; лише після цього надсилайте прийняті записи до Insert і вручну зіставляйте кожен стовпець. Зчитайте дані зі сховища з увімкненим Return All, призупинивши інші процеси запису; n8n попереджає, що одночасні зміни можуть спричинити пропуски або повтори під час читання зі сторінковою навігацією. Порівняйте кількість збережених записів і точні значення ідентифікаторів із масивом accepted, а потім перевірте значення name та email.

Якщо після імпорту CSV у n8n бракує рядків або кількість не збігається, перевірте збережені результати класифікації, вхідні дані вставлення та налаштування повторного зчитування, перш ніж запускати процес знову. Довідник операцій зазначає залежність поведінки від версії, попереджає, що звичайний Insert може дублювати записи під час повторних запусків, і описує порожні виходи, коли фільтрація вилучає всі елементи. Сама лише порожня гілка не є достатнім доказом завершення.

Після завантаження використайте окрему перевірку If, щоб порівняти кількість і значення полів повторно зчитаних записів із прийнятими, спрямовуючи будь-яку невідповідність до Stop And Error. Збій не означає відкату попередніх операцій запису. Блокування у робочому середовищі, гарантії транзакцій і відновлення після часткового запису виходять за межі цієї ізольованої вправи. На завершення зафіксуйте наведені нижче рішення для осмислення результату.

Sources: n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.if.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.datatable/rows.md at main · n8n-io/n8n-docs · GitHub, skills/skills/n8n-data-tables-official/references/OPERATIONS.md at main · n8n-io/skills · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.stopanderror.md at main · n8n-io/n8n-docs · GitHub

Спробуйте на практиці

Практичні завдання з n8n

Оберіть завдання й створіть робочий воркфлоу у власному середовищі n8n – до кожного завдання є п’ять поступових підказок.

Спробувати практичне завдання

Для вашої команди

Програми навчання n8n для однієї команди чи відділу – на вашому власному екземплярі n8n, з вашими інструментами й даними.

Навчання для вашої команди

Оцінка навичок n8n

Безкоштовний тест приблизно на 20 хвилин, англійською: 30 запитань у 10 напрямах і рівень від початківця до експерта. На AI Adoption Score – іншому проєкті автора цього сайту.

Дізнатися свій рівень n8n