CSV ( Comma Separated Values) ist ein Tabellenspeicherformat, in dem Zellenwerte durch das Symbol "," getrennt werden. Anstelle von "," kann ein anderes Zeichen als Trennzeichen verwendet werden. Bei AppMaster ist jedoch ein Komma erforderlich.
Es ist darauf zu achten, dass dieses Zeichen nicht innerhalb der Zelle vorkommt. Andernfalls werden die Daten der Datei falsch gelesen.
Erstellen Sie zunächst ein Datenmodell, in dem die Informationen aus der CSV-Datei gespeichert werden sollen. Lassen Sie uns zum Beispiel ein Datenmodell für Flüge erstellen. Es wird die folgenden Felder enthalten:
- flight_no - Flugnummer, im Ganzzahlformat;
- Zielort im String-Format;
- Klassen - Flugklasse, die für diesen Flug verfügbar ist, Format array[string].
Ein Beispiel für eine Datei, die importiert werden soll:
Die erste Spalte enthält flight_no, die zweite enthält destination, und die dritte Spalte enthält classes.
In der dritten Spalte werden die Werte durch ein Semikolon getrennt.
Einen Geschäftsprozess erstellen
Gehen Sie auf die Registerkarte Business Logic und klicken Sie auf die Schaltfläche Create Business Process Schaltfläche.
Dieser Geschäftsprozess benötigt eine CSV-Datei, also fügen Sie das Dateifeld in den Start Block hinzu.
Als nächstes benötigen wir den Read CSV Datei-Block.
In ähnlicher Weise können Sie die Blöcke Read XLS file und Read XLSX file für die entsprechenden Formate verwenden.
So funktioniert der Read CSV file -Block:
Er hat zwei Ausgangskonnektoren: Each Row und Completed. Wenn der Block aktiviert wird, liest er die Datei Zeile für Zeile, und jedes Mal aktiviert er den Each Row Anschluss und übergibt die Zeilennummer (Row number, beginnend mit 1) und Row Columns ein String-Array aller Spalten der aktuellen Zeile.
Übergeben Sie die Datei vom Start Block an den Read CSV file Block:
Als nächstes fügen Sie den For Each Loop Block hinzu. Es wird das String-Array verarbeitet, das den Read CSV file blockiert.
Für Each Loopwird, genau wie bei der Read CSV file, verarbeitet jedes Element des Arrays und aktiviert den Loop Body Verbinder für jedes von ihnen.
Das Index-Ausgangsfeld im For Each Loop -Block ist die Indexnummer des Array-Elements. Es beginnt bei 0.
Verbinden Sie alle Anschlüsse:
Der nächste Block ist Switch. Mit seiner Hilfe bestimmen wir, wohin die Werte der verschiedenen Felder geschrieben werden sollen.
Switch kann jede Art von Eingabe akzeptieren und in Abhängigkeit davon verschiedene Ausgabekonnektoren aktivieren. Der Default Konnektor wird aktiviert, wenn der Eingabewert mit keinem der erstellten Konnektoren übereinstimmt.
Die CSV-Datei hat drei Spalten, was bedeutet, dass in jedem Array Row columns drei Werte gespeichert sind, immer in der gleichen Reihenfolge:
- Anzahl;
- Richtung;
- Klassen.
Daher werden wir drei Ausgangskonnektoren im Switch Block 0, 1 und 2 und übergeben den Index aus dem For Each Loop Block an den Switch Block.
Die erste Spalte in der Datei enthält die Flugnummer. Aber der For Each Loop Block erhält sie im string Format. Daher konvertieren wir sie in eine Ganzzahl mit dem To integer Block vor dem Speichern in eine Ganzzahl um. Danach speichern wir sie in einer Variablen mit dem Set variable Block.
Die zweite Spalte in der Datei enthält die Richtung im string Format. Sie kann sofort in einer Variablen gespeichert werden.
Die dritte Spalte in der Datei enthält eine Liste von Klassen, die durch Semikolons getrennt sind. Der For Each Loop Block erhält sie auch im String-Format. Also teilen wir sie in ein Array von Strings auf. Dazu verwenden wir den Split String Block. Übergeben wir eine Zeichenkette mit einer Liste von Klassen und setzen wir ";" als Standardtrennzeichen.
Speichern Sie den empfangenen Wert in einer Variablen.
Es wird eine Schleife über alle Spaltenwerte in jeder Zeile eingerichtet.
Wir müssen aus jeder Zeile der Datei einen Eintrag erstellen. Wir verwenden den fertigen Ausgabekonnektor im For Each Loop Block und dem Make flight Block, um dies zu tun. Übertragen wir alle Variablen, die wir während des Zyklus erhalten haben, in diese Datei.
Speichern Sie nun das Modell, das in Make flight unter Verwendung des DB Create flight Block.
So wird jede Zeile als ein Datensatz in der Datenbank gespeichert.
Nun müssen wir die Verarbeitung der Datei abschließen. Wir verwenden den completed Ausgangskonnektor im Read CSV file Block und verbinden ihn mit dem End Block.
Der BP zum Importieren aus einer Datei ist beendet.
Endpoint einrichten
Gehen Sie auf die Registerkarte Endpoints und erstellen Sie einen neuen Endpunkt.
Wählen Sie die POST Methode, stellen Sie die URL Adresse ein, wählen Sie die Flight groupund den erstellten BP Import CSV.
Einrichten einer Schaltfläche auf dem Frontend
Nun müssen wir eine Schaltfläche auf dem Frontend einrichten, um die Datei hochzuladen.
Ziehen Sie das File picker Element auf die Leinwand.
Und richten Sie den BP dafür ein:
Verwenden Sie den onSelectfiles Auslöser. Dieser Trigger empfängt Dateien als Array, auch wenn nur eine Datei vorhanden ist. Daher werden wir den Array Element Block verwenden, um ein Element aus dem Array zu erhalten. Wir setzen das Indexfeld auf 0, um das erste Element aus dem Array zu erhalten.
Speichern Sie nun die hochgeladene Datei in der Datenbank mit dem Server request POST /_files/ Block.
Expandieren Sie die resultierende Datei mit dem Expand file Block.
Übergeben Sie nun die ID (die in diesem Fall eine Datei ist) an den Server request POST /flight/csv/ Block.