@ wBobs Lösung funktioniert, wenn Ihre Zeile in eine Zeichenfolge (128kB) passt. Schreiben Sie andernfalls Ihren benutzerdefinierten Extraktor, der mit der Extraktion behoben wird. Abhängig davon, welche Informationen Sie für das Format haben, können Sie es schreiben, indem Sie input.Split()
verwenden, um es in Zeilen aufzuteilen, und dann die Zeilen basierend auf Ihren Leerraumregeln aufteilen (vollständiges Beispiel für Extractor-Muster ist here) oder Sie könnten eine ähnliche schreiben der in this blog post beschriebene.
public override IEnumerable<IRow> Extract(IUnstructuredReader input, IUpdatableRow outputrow)
{
foreach (Stream current in input.Split(this._row_delim))
{
using (StreamReader streamReader = new StreamReader(current, this._encoding))
{
int num = 0;
string[] array = streamReader.ReadToEnd().Split(new string[]{this._col_delim}, StringSplitOptions.None).Where(x => !String.IsNullOrWhiteSpace(x)));
for (int i = 0; i < array.Length; i++)
{
// Now write your code to convert array[i] into the extract schema
}
}
yield return outputrow.AsReadOnly();
}
}
}
Große Zugabe, und wichtiger Punkt über die 128KB Grenze, danke @MichaelRys. – wBob