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

Перевірено за наведеними джерелами .
Завдання та передумови імпорту CSV у n8n

Ця редакційна вправа пропонує спроєктувати імпорт 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. Цей запропонований тестовий набір містить п’ять записів даних; заголовок до кількості не входить. Сприймайте customer_id як точний ідентифікатор і вимагайте, щоб усі три поля містили текст, який не складається лише з пробільних символів. Перевірка формату електронної адреси виходить за межі цієї вправи.
| customer_id | name | |
|---|---|---|
| 00127 | Ada | ada@example.invalid |
| 00420 | Ben | ben@example.invalid |
| 00127 | Ada repeat | repeat@example.invalid |
| 00009 | Порожньо | missing@example.invalid |
| Порожньо | Cy | cy@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
Класифікуйте записи та звірте їх перед завантаженням

Після успішної перевірки ідентифікаторів використайте Edit Fields для явного зіставлення полів і за потреби відкиньте невикористані поля. Документація n8n описує власний JavaScript у вузлі Code та умовне розгалуження через If. Наведений нижче алгоритм імпорту CSV у n8n — це редакційна пропозиція, яку вам потрібно реалізувати й перевірити.
Зберігайте масиви accepted, invalid і duplicate разом зі зведенням в одному вихідному елементі Code. Збережіть початкові значення полів та індекс запису в джерелі й додайте причини відхилення. Дотримуйтеся наведеного порядку, щоб кожен запис належав рівно до однієї категорії; враховуйте задокументовані вимоги n8n до зв’язування елементів, коли кількість вхідних і вихідних елементів відрізняється.
- Ініціалізуйте порожні масиви категорій і множину прийнятих значень customer_id.
- Перевіряйте кожен запис у порядку джерела; спочатку класифікуйте записи без обов’язкових значень як некоректні.
- Для коректного запису класифікуйте вже відомий customer_id як дублікат; інакше прийміть запис і запам’ятайте його ідентифікатор.
- Обчисліть кількість записів у категоріях і поверніть масиви разом зі зведенням, навіть якщо 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 та осмисліть результат

У цьому імпорті до 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


