Проверить колонки экспорта до записи файла

Результат настоящих запросов через PDO_ODBC. Собственные учебные объекты после наблюдений удалены.

Результат выполнения
НаблюдениеРезультат
Колонкиitem_code, item_title, available
Позиция A-10Кабель | 3
Позиция B-20Хомут | 0
Неверный aliasold_title: экспорт отклонён
Пустая категория0 строк; те же 3 колонки
SQL-тип из metadatanative_type отсутствует; формат задан картой
Файлcolumn-contract.json
Полученные строки и наблюдения
{
    "metadata": [
        {
            "pdo_type": 2,
            "name": "item_code",
            "len": 20,
            "precision": 0
        },
        {
            "pdo_type": 2,
            "name": "item_title",
            "len": 60,
            "precision": 0
        },
        {
            "pdo_type": 2,
            "name": "available",
            "len": 11,
            "precision": 0
        }
    ],
    "selected": [
        {
            "item_code": "A-10",
            "item_title": "Кабель",
            "available": "3"
        },
        {
            "item_code": "B-20",
            "item_title": "Хомут",
            "available": "0"
        }
    ],
    "wrong_names": [
        "item_code",
        "old_title",
        "available"
    ],
    "empty_names": [
        "item_code",
        "item_title",
        "available"
    ],
    "contract": {
        "columns": [
            {
                "name": "item_code",
                "label": "Артикул",
                "kind": "text"
            },
            {
                "name": "item_title",
                "label": "Название",
                "kind": "text"
            },
            {
                "name": "available",
                "label": "Остаток",
                "kind": "integer_text"
            }
        ],
        "rows": [
            {
                "item_code": "A-10",
                "item_title": "Кабель",
                "available": "3"
            },
            {
                "item_code": "B-20",
                "item_title": "Хомут",
                "available": "0"
            }
        ],
        "empty_rows": [],
        "wrong_alias_rejected": true,
        "native_type_available": false
    }
}

result.json содержит те же данные. Реквизиты входа сюда не записываются.