Задача и предварительные условия
Обновите существующий товар по ключу sku и добавьте отсутствующий в учебную таблицу SQL.
В примере используются демонстрационные данные и настройки. Проверьте ожидаемый результат в своей среде до подключения рабочих получателей. Идентификаторы demo_* условны: выберите собственные учебные подключения или источники в редакторе. JSON ниже показывает структуру блоков и связей, а не готовый архив потока для переноса.
Нужно подключение учебной базы 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 во входном файле до записи.
- Не подставляйте рабочую таблицу вместо учебной без проверки её схемы и прав записи.