Перейти к содержанию

Импорт записей в табличный список

Запрос

Тип Метод
POST /value_stores/{id}/upload

Описание: метод загружает записи из файла в табличный или белый список.

Поддерживаются следующие форматы импорта:

  • json — массив объектов с полями _id, _ttl и полями схемы табличного списка;
  • csv — первая колонка _id, последняя колонка _ttl, между ними располагаются поля схемы;
  • excel — ячейка A1 содержит _id, последняя колонка содержит _ttl, между ними располагаются поля схемы.

Поведение при импорте зависит от значения параметра update:

  • false — данные хранилища очищаются, после чего загружаются данные из файла;
  • true — данные из файла добавляются или обновляются без полной очистки хранилища.

Для формата csv дополнительно можно указать разделитель и кодировку.

Пример запроса

POST

http://127.0.0.1/cruddy/v2/value_stores/550e8400-e29b-41d4-a716-446655440000/upload?format=json

Параметры пути:

Параметр Тип данных Обязательность Описание
id string (UUID) Required ID табличного или белого списка

Параметры строки запроса:

Параметр Тип данных Обязательность Описание
format string Required Формат загружаемого файла: json, csv или excel

Тип тела запроса: multipart/form-data.

Параметры тела запроса:

Параметр Тип данных Обязательность Описание
file binary Required Файл с импортируемыми данными
update boolean Optional Определяет режим загрузки данных. По умолчанию — false
delimiter string Optional Разделитель CSV. Используется только при format=csv. По умолчанию — ;
encoding string Optional Кодировка CSV. Используется только при format=csv. По умолчанию — cp1251 / win-1251, если в файле отсутствует UTF BOM

Требования к содержимому файла:

  • для json — массив объектов вида [{"_id":"...","_ttl":0,"<поле_схемы>":"..."}];
  • для csv — первая строка содержит _id, поля схемы и _ttl;
  • для excel — ячейка A1 должна содержать _id, далее располагаются поля схемы, последняя колонка — _ttl.

Примечание: В OpenAPI есть несоответствие в описании параметра update: в текстовом описании указано, что значение true должно передаваться строкой true, при этом в схеме multipart/form-data параметр имеет тип boolean.

Успешный ответ

Статус код: 200 – данные успешно импортированы.

Формат: JSON.

Тело ответа соответствует модели KvsUploadResponse.

Другие возможные ответы

Код Ответ Описание
400 Ошибка параметров или файла Ошибка в параметрах запроса, формате или содержимом импортируемого файла
401 can't get user info: Невозможно аутентифицировать пользователя
404 Хранилище не найдено Табличный список с указанным ID не найден
500 Internal Server Error Ошибка при обработке или загрузке файла

Возможные ошибки:

  • 400 — "missing uid header" — отсутствует заголовок Pgr-User-ID;
  • 400 — "Pgr-User-Id should be uuid format" — неверный формат Pgr-User-ID;
  • 400 — "format must be one of: json, csv, excel" — параметр format не передан или имеет недопустимое значение;
  • 400 — "id not specified" — не передан параметр id;
  • 400 — "failed to parse form" — ошибка разбора multipart/form-data;
  • 400 — "file not found in request" — в запросе не передан файл или передано более одного файла;
  • 400 — "cannot open form file" — ошибка открытия файла из формы;
  • 400 — "cannot open file" — ошибка открытия файла;
  • 400 — "cannot read file" — ошибка чтения файла;
  • 400 — "cannot parse json file" — ошибка разбора JSON-файла;
  • 400 — "failed to open excel file: ..." — ошибка открытия Excel-файла;
  • 400 — "failed to read first col and row from excel file: ..." — ошибка чтения ячейки A1;
  • 400 — "first column and row must be equal to '_id'" — значение ячейки A1 не равно _id;
  • 401 — "can't get user info:" — невозможно аутентифицировать пользователя;
  • 404 — "RvsUploadJson error: get store error: store not found" — хранилище не найдено;
  • 500 — "scanner.ReadAll() failed: ..." — ошибка чтения CSV-файла;
  • 500 — "GetRows(sheetName) failed: ..." — ошибка чтения строк Excel-файла;
  • 500 — "RvsUploadJson error: ..." — ошибка загрузки данных в хранилище;
  • 500 — "Internal Server Error" — ошибка сервера.
Пример ответа с кодом 400

{
  "error": "format must be one of: json, csv, excel"
}
Пример ответа с кодом 404

{
  "error": "RvsUploadJson error: get store error: store not found"
}
Пример ответа с кодом 500

{
  "error": "Internal Server Error"
}