CSV ( Comma Separated Values) to format zapisu tabeli, w którym wartości komórek oddzielone są symbolem ",". Zamiast "," separator może być używany inny znak. Chociaż AppMaster wymaga przecinka.
Ważne jest, aby ten znak nie występował wewnątrz komórki. W przeciwnym razie dane z pliku zostaną odczytane nieprawidłowo.
Najpierw należy stworzyć model danych, w którym będą zapisywane informacje z pliku CSV. Na przykład stwórzmy model danych dla lotów. Będzie on zawierał następujące pola:
- flight_no - numer lotu, w formacie liczb całkowitych;
- destination w formacie string;
- classes - klasa lotu dostępna dla tego lotu, format array[string].
Przykładowy plik, który zostanie zaimportowany:
Pierwsza kolumna zawiera. flight_no, druga zawiera. destination, a trzecia zawiera classes.
W trzeciej kolumnie wartości oddzielone są średnikiem.
Tworzenie procesu biznesowego
Przejdź do Business Logic i kliknij przycisk Create Business Process przycisk.
Ten proces biznesowy wymaga pliku CSV, więc dodaj pole pliku do Start blok.
Następnie potrzebujemy Read CSV file block.
Podobnie możesz użyć bloków Read XLS file i Read XLSX file dla odpowiednich formatów.
Jak działa blok Read CSV file:
Posiada on dwa złącza wyjściowe: Each Row oraz Completed. Gdy blok zostanie uruchomiony, będzie czytał plik linia po linii, a za każdym razem będzie aktywował złącze Each Row i przekaże numer wiersza (Row number, począwszy od 1) oraz Row Columns tablicę łańcuchów wszystkich kolumn bieżącego wiersza.
Przekaż plik z bloku Start do bloku Read CSV file block:
Następnie dodajemy. For Each Loop block. Będzie on przetwarzał tablicę łańcuchów, które przesyła m.in. Read CSV file blok.
Dla . Each Loop, tak jak w przypadku Read CSV file, przetwarza każdy element tablicy i aktywuje Loop Body złącze dla każdego z nich.
Pole wyjściowe index w bloku For Each Loop jest numerem indeksu elementu tablicy. Zaczyna się on od 0.
Podłącz wszystkie złącza:
Następny blok to. Switch. Z jego pomocą określimy, gdzie należy zapisać wartości z różnych pól.
Switch może przyjąć dowolny typ danych wejściowych i w zależności od niego może aktywować różne złącza wyjściowe. Złącze Default złącze jest aktywowane, jeśli wartość wejściowa nie pasuje do żadnego z utworzonych złączy.
Plik CSV ma trzy kolumny, co oznacza, że w każdej tablicy Row columns przechowywane są trzy wartości, zawsze w tej samej kolejności:
- liczba;
- kierunek;
- klasy.
Dlatego utworzymy trzy złącza wyjściowe w Switch bloku 0, 1 i 2 i przekażemy indeks z bloku For Each Loop do bloku Switch bloku.
Pierwsza kolumna w pliku zawiera numer lotu. Jednak For Each Loop blok pobiera go w formacie string w formacie. Dlatego konwertujemy go na liczbę całkowitą przy pomocy To integer przed zapisem. Po tym zapisujemy ją do zmiennej za pomocą Set variable bloku.
Druga kolumna w pliku zawiera kierunek w string formacie. Można go od razu zapisać do zmiennej.
Trzecia kolumna w pliku zawiera listę klas oddzielonych średnikami. Blok For Each Loop blok pobiera ją również w formacie łańcuchowym. Należy więc podzielić ją na tablicę ciągów znaków. Aby to zrobić, używamy bloku Split String blok. Przekażmy do niego ciąg z listą klas i ustawmy ";" jako domyślny separator.
Zapisz otrzymaną wartość do zmiennej.
Konfiguracja pętli przez wszystkie wartości kolumn w każdym wierszu jest zakończona.
Musimy utworzyć wpis z każdej linii w pliku. Używamy wypełnionego złącza wyjściowego w For Each Loop i bloku Make flight aby to zrobić. Przekażmy do niego wszystkie zmienne otrzymane w trakcie cyklu.
Teraz zapisz model utworzony w Make flight za pomocą DB Create flight bloku.
W ten sposób każdy wiersz zostaje zapisany jako rekord w bazie danych.
Teraz musimy dokończyć przetwarzanie pliku. Wykorzystamy do tego celu completed złącze wyjściowe w bloku Read CSV file i podłączymy je do bloku End bloku.
BP do importu z pliku jest zakończony.
Endpoint konfiguracja
Przejdź do zakładki Endpoints i utwórz nowy endpoint.
Wybierz POST metodę, ustaw URL adres, wybierz Flight group, a utworzony BP Import CSV.
Ustawienie przycisku na frontend
Teraz musimy skonfigurować przycisk na front-endzie do wgrywania pliku.
Przeciągnij File picker na płótno.
I skonfigurować dla niego BP:
Użyj onSelectfiles wyzwalacza. Ten wyzwalacz odbiera pliki jako tablicę, nawet jeśli jest tylko jeden plik. Dlatego użyjemy bloku Array Element , aby uzyskać jeden element z tablicy. Ustawmy pole index na 0, aby uzyskać pierwszy element z tablicy.
Zapiszmy teraz przesłany plik do bazy danych za pomocą bloku Server request POST /_files/ bloku.
Rozwiń plik wynikowy używając Expand file block.
Teraz przekaż identyfikator (który w tym przypadku jest plikiem) do Server request POST /flight/csv/ bloku.