Завдання та передумови
Оновити наявний товар за ключем sku і додати відсутній товар до навчальної SQL-таблиці.
Приклад містить навчальні дані та налаштування. Виберіть власні тестові джерела й підключення замість ідентифікаторів demo_*, відтворіть очікуваний результат і лише потім використовуйте робочі об’єкти.
Потрібне підключення до навчальної SQL-БД із підтримуваним конектором і правами читання/запису demo_products. Сам приклад не виконує SQL-запис.
Навчальні вхідні дані
Початковий стан таблиці demo_products:
| sku | name | price |
|---|---|---|
| T01 | Tea | 10 |
| C01 | Coffee | 20 |
products.csv
sku;name;price
T01;Tea premium;12.5
J01;Juice;8
Блоки, зв’язки й точні налаштування
Топологія прикладу 14: 3 блоки, 2 зв’язки. Збережено ідентифікатори вузлів і порти налаштованого графа.
Додайте наведені блоки в конструктор, відкрийте властивості кожного й установіть такі значення. Назви demo_* позначають навчальні джерела та підключення.
| Блок | Налаштування |
|---|---|
| 1 Файл src |
|
| 2 Формат чисел і дат cast |
|
| 3 Підключення sql |
|
Зв’язки портів
- src
out→ castin - cast
out→ sqlin
Повна конфігурація графа JSON
{
"version": 3,
"nodes": [
{
"id": "src",
"type": "file",
"label": "src",
"config": {
"role": "source",
"source_id": "demo_products_upsert",
"options": {
"sheet": "CSV",
"range": "A1:C3",
"header": true,
"delimiter": ";"
}
}
},
{
"id": "cast",
"type": "number_format",
"label": "cast",
"config": {
"rules": [
{
"kind": "number",
"field": "price",
"decimal_in": ".",
"thousands_in": "",
"extract": false,
"invalid": "error",
"output": "number"
}
]
}
},
{
"id": "sql",
"type": "connection",
"label": "sql",
"config": {
"role": "target",
"connection_id": "demo_sql",
"external": {
"object": "demo_products",
"write_mode": "upsert",
"key_fields": [
"sku"
]
}
}
}
],
"edges": [
{
"source": "src",
"target": "cast",
"source_port": "out",
"target_port": "in"
},
{
"source": "cast",
"target": "sql",
"source_port": "out",
"target_port": "in"
}
]
}Очікуваний результат
| sku | name | price |
|---|---|---|
| T01 | Tea premium | 12.5 |
| C01 | Coffee | 20 |
| J01 | Juice | 8 |
T01 оновлено, J01 додано, C01 залишається. Ключ sku має бути унікальним у навчальній таблиці.
Запуск і перевірка
- Підготуйте навчальну таблицю demo_products і перевірте початковий стан із 2 рядків.
- Звірте типи стовпців: sku/name — текст, price — число; блок cast перетворює текст CSV на число.
- Виконайте попередню перевірку, потім запуск; прочитайте таблицю та звірте 3 наведені рядки.
- Повторіть той самий запуск: upsert за sku має оновити ті самі товари без створення дублікатів.
Типові помилки
- insert замість upsert не оновить T01 і може порушити унікальний ключ.
- Порожній або повторний sku у вхідному файлі треба виправити до запису.
- Не підміняйте навчальну таблицю робочою без перевірки схеми та прав запису.