Saltar al contenido

Importación de Archivos de Texto

Este complemento de C# toma un archivo txt de [] e inserta cada línea como un registro en una tabla provisional como una cadena en la columna de destino.

C:\ es el directorio local de origen en el que existe el archivo txt importTableIDText toma un GUID para TableID el texto se dirigirá a "FileName" es el nombre de la columna en BO Desde donde se ejecuta el evento para seleccionar un archivo particular en el directorio local de origen "Importar" es la columna nombre en la tabla de destino, cada línea se guardará como un nuevo registro con una cadena de su contenido en esta columna.

Caso de Uso

Esto podría usarse cuando la empresa tiene un archivo de texto de formato o ancho fijo que debe importarse para llevar los datos a Vinyl a una tabla provisional, antes de usar lógica de negocios adicional para analizar los datos en campos apropiados para procesos comerciales posteriores.

Referencias de Complementos

Columna Tipo de datos Descripción
C: String directorio local de origen
importTableIDText Unique ID toma un GUID para el TableID al que se dirigirá el texto
FileName String nombre de la columna en el evento de objeto de negocio se ejecuta desde para seleccionar un archivo particular en el directorio local de origen
Import String nombre de columna en la tabla de destino, cada línea se guardará como un nuevo registro con una cadena de su contenido en esta columna

Secuencia de Comandos de Importación de Archivos de Texto

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);
}