Импорт: связать имена полей с позициями INSERT

Фактические данные получены через расширение interbase от отдельной локальной базы Firebird. Собственные учебные объекты удалены после наблюдений.

Наблюдаемый результат программы
НаблюдениеРезультат
Входных мест INSERT3
Отклонён товар без поля100: qty
Сохранены товары101, 102
Товар 101Муфта: 0
Товар 102Кабель: 5
Представление названияVARCHAR / 80 байт
Порядок ключей входа не повредил поляда
Команда INSERT освобожденада
Строки и дополнительные наблюдения
{
    "saved": [
        {
            "id": 101,
            "title": "Муфта",
            "qty": 0
        },
        {
            "id": 102,
            "title": "Кабель",
            "qty": 5
        }
    ],
    "rejected": [
        {
            "id": 100,
            "missing": [
                "qty"
            ]
        }
    ],
    "input_contract": [
        {
            "position": 0,
            "field": "id",
            "type": "INTEGER",
            "bytes": "4"
        },
        {
            "position": 1,
            "field": "title",
            "type": "VARCHAR",
            "bytes": "80"
        },
        {
            "position": 2,
            "field": "qty",
            "type": "INTEGER",
            "bytes": "4"
        }
    ],
    "execute_returns": [
        1,
        1
    ],
    "business_field_names_are_application_mapping": true
}

Самостоятельный запуск создаёт result.json с данными и metrics.json с проверками рядом с example.php.