@ Решение wBob работает, если ваша строка вписывается в строку (128kB). В противном случае напишите свой собственный экстрактор, который исправляется с извлечением. В зависимости от того, какую информацию у вас есть в формате, вы можете записать ее, используя input.Split()
, чтобы разбить на строки, а затем разбить строки на основе правил пробелов, как показано ниже (полный пример шаблона Extractor равен here), или вы можете написать одно подобное тот, который описан в this blog post.
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();
}
}
}
Отличное дополнение и важный пункт о пределе 128 КБ, спасибо @MichaelRys. – wBob