CSV (Comma Separated Values) – это формат хранения таблиц, в котором значения ячеек отделены друг от друга символом “,”.  Теоретически, вместо “,” разделителем может быть и другой символ. В AppMaster же используется именно запятая.

Важно следить, чтобы этот символ не встречался внутри ячейки, иначе файл неверно считает данные.

Для начала создадим модель данных, куда будет сохраняться информация из CSV файла.

Для примера сделаем модель данных для авиарейсов. В ней будут следующие поля:

  • flight_no – номер полета, в формате integer;
  • destination – пункт назначения, в формате string;
  • сlasses – класс перелета, доступный для этого перелета, в формате array[string].

Пример файла, который нужно импортировать:

В первом столбце содержится flight_no, во втором – destination и в третьем – classes.

В третьем столбце значения разделены точкой с запятой (;).

Создаем бизнес-процесс

Переходим во вкладку Business Logic и нажимаем на кнопку Create Business Process.

 Для этого БП нужен CSV-файл, поэтому необходимо добавить поле file в блок Start. Благодаря этому БП всегда будет ждать на вход файл.

Далее понадобится блок Read CSV file.

Аналогично можно использовать блоки Read XLS file и Read XLSX file для соответствующих форматов.

Как работает блок Read CSV file 

У него есть два выходных коннектора Each Row и Completed. При активации блока он будет читать файл строка за строкой и каждый раз будет активировать коннектор Each Row и передавать номер строки (Row number, начиная с 1) и Row Columns, который представляет собой строковый массив всех столбцов текущей строки.

Передадим в блок Read CSV file файл из блока Start.

Далее необходим блок For Each Loop. Он будет обрабатывать строковый массив, который отправляет блок Read CSV file.

For Each Loop также, как и Read CSV file обрабатывает каждый элемент массива и активирует коннектор Loop Body для каждого из них.

Выходное поле index в блоке For Each Loop – это порядковый номер элемента массива. Отсчет начинается с 0.

Теперь соединим все коннекторы:

 

Следующий блок – Switch. С его помощью можно определить, куда записывать значения из разных полей.

Switch может принимать на вход значения любого типа и в зависимости от него активировать разные выходные коннекторы. Если значение на входе не совпадает ни с одним из созданных коннекторов, тогда активируется коннектор Default.

В файле CSV есть три столбца, а значит в каждом массиве Row сolumns хранится три значения, всегда в одинаковом порядке:

1 – номер;

2 – направление;

3 – классы.

Поэтому необходимо создать три выходных коннектора в блоке Switch –  0, 1 и 2 и передать в блок Switch index из блока For Each Loop.

Первый столбец в файле содержит номер рейса. Но в блок For Each Loop он попадает в формате string. Поэтому перед сохранением конвертируем его в integer с помощью блока To integer. После этого сохраним его в переменную с помощь блока Set variable.

Второй столбец в файле содержит направление сразу в формате string. Поэтому сохраняем его в переменную.

Третий столбец в файле содержит список классов, разделенных точкой запятой. В блок For Each Loop он также попадает в формате string. Нам нужно разделить его на массив строк. Для этого используем блок Split String. Передадим в него строку со списком классов, а в качестве  разделителя по умолчанию зададим “;”.

Сохраним полученное значение в переменную.

Мы закончили настройку цикла для перебора всех значений столбцов в каждой строке.

Теперь нужно создать запись из каждой строки в файле. Для этого используем выходной коннектор completed в блоке For Each Loop и блок Make flight. Передадим в него все переменные, полученные в ходе работы цикла.

Далее нужно сохранить модель полученную в Make flight с помощью блока DB Create flight.

 

Так мы сохраняем каждую строку как запись в БД.

Далее необходимо завершить процесс обработки файла. Для этого используем выходной коннектор completed в блоке Read CSV file и соединим его с блоком End.

На этом заканчиваем создание БП для импорта из файла. 

Настройка Endpoint

Перейдем на вкладку Endpoints и создадим новый эндпоинт.

 

Выберем метод POST, зададим URL адрес, выберем группу Flight и созданный БП Import CSV.

 

Настройка кнопки в интерфейсе

Теперь нужно настроить кнопку во внешнем интерфейсе, которая будет загружать файл.

Перетащим элемент File picker на канвас.

Далее настраиваем БП для него:

Используем триггер onSelectFiles. Этот триггер получает файлы в виде массива, даже если файл один. Поэтому используем блок Array Element, чтобы достать один элемент из массива. Установим поле index равным 0, чтобы достать первый элемент из массива.

 Сохраняем загруженный файл в БД, с помощью стандартного блока Server request POST /_file.

Развернем полученный файл с помощью блока Expand file.

Теперь передадим ID (который является файлом) в блок Server request POST /flight/csv.

Was this article helpful?

AppMaster.io 101 Полный курс

10 модулей
2 недели

Не знаете с чего начать? Начните с нашего ускоренного курса для начинающих и изучите AppMaster от А до Я.

Начать обучение
Development it’s so easy with AppMaster!

Остались вопросы?

Наши эксперты с радостью ответят на все ваши вопросы о платформе AppMaster и помогут вам в создании приложений.

headphones

Служба поддержки

Поделитесь своей проблемой с нашими специалистами.

message

Комьюнити AppMaster

Обсудите вопросы с другими пользователями в нашем чате.

Присоединиться