Zum Inhalt springen

Textdateiimport im Jitterbit App Builder

Dieses C#-Plugin nimmt eine txt-Datei und fügt jede Zeile als Datensatz in eine Staging-Tabelle als Zeichenfolge in der Zielspalte ein.

C:\ ist das lokale Quellverzeichnis, in dem die txt-Datei vorhanden ist. importTableIDText verwendet eine GUID zur TableID, in die der Text geleitet wird. „FileName“ ist der Spaltenname im BO-Ereignis, das ausgeführt wird, um eine bestimmte Datei im lokalen Quellverzeichnis auszuwählen. „Import“ ist der Spaltenname in der Zieltabelle. Jede Zeile wird als neuer Datensatz mit einer Zeichenfolge ihres Inhalts in dieser Spalte gespeichert.

Anwendungsfall

Dies kann verwendet werden, wenn das Unternehmen eine Textdatei mit fester Breite oder festem Format hat, die importiert werden muss, um die Daten in App Builder in eine Staging-Tabelle, bevor zusätzliche Geschäftslogik verwendet wird, um die Daten in geeignete Felder für spätere Geschäftsprozesse zu zerlegen.

Plugin-Referenzen

Spalte Datentyp Beschreibung
C: String lokales Quellverzeichnis
importTableIDText Unique ID verwendet eine GUID zur TableID, in die der Text geleitet wird
FileName String Spaltenname im Business Object-Ereignis wird ausgeführt, um eine bestimmte Datei im lokalen Quellverzeichnis auszuwählen
Import String Spaltenname in der Zieltabelle. Jede Zeile wird als neuer Datensatz mit einem String ihres Inhalts in dieser Spalte gespeichert.

Script zum Importieren von Textdateien

using System;
using System.IO;
using Vinyl.Sdk.Events;
using Vinyl.Sdk.Filtering;
// the directory to read files from
const string directory = @"C:\";
// the tableid to import the data into
const string importTableIDText = "cfeb9762-10c8-4832-ba9d-446ba0b39e8a";
// File to be imported
// This column should be present in the data object triggering this plugin
string fileName = Row["FileName"].GetValueAsString();
Guid importTableId = new Guid(importTableIDText);
var tableService = Services.GetService<ITableService>();
var eventService = Services.GetService<IEventService>();
// Creates EventTable (2.6 is missing a function to go from Table
// to EventTable w/o using an event, so we limit to 0 rows to avoid
// wasting time bringing rows we don't need)
var importTableFilter = tableService.GetTable(importTableId).CreateFilter();
importTableFilter.Limit = 0;
var importTable = await eventService.InvokeFilterEventAsync(importTableFilter);
foreach (string line in File.ReadLines(Path.Combine(directory,fileName)))
{
    // Creates a new row in the staging table
    EventRow row = await eventService.InvokeNewEventAsync(importTable);
    // Pull the desired values
    row["Import"].Value = line;
    // Inserts (persists) that row
    await eventService.InvokeInsertEventAsync(row);
}