这是我在Stackoverflow上的第一篇文章。
我正在从平面文件(逗号分隔)中读取数百万行,并迭代每个读取行,然后迭代每行的每一列。每列的迭代是允许执行用户定义的转换,默认值,删除特殊字符等。目前的实施非常有效。
数据读取分批完成20k。当我正在处理读取行时,我在内存中的DataTable上发出一个NewRow()调用。然后我开始迭代每一列来擦除它们的值。我正在尝试在处理行列时尽量减少。
我的问题是这个。如果从平面文件中读取的值(在本例中为文本)长于目标DataTables DataColumn的MaxLength,则会在发出以下内容时收到异常说明:
dataTable.Rows.Add(newRow);
有没有办法告诉ADO.Net(或我的内存中DataTable)截断数据而不是抱怨?
同样,我可以轻松地在循环中添加逻辑来为我执行此检查/截断,但是当您处理数百万行数据时,这些事情会增加。
答案 0 :(得分:0)
这样的事情应该有效:
var newRow = dataTable.NewRow();
...
...
if(YourText.Length < ColumnMaxLength)
{
newRow["YourLimitedColumnName"] = YourText;
}
else
{
newRow["YourLimitedColumnName"] = YourText.Substring(0, ColumnMaxLength);
}
...
...
dataTable.Rows.Add(newRow);