尝试通过StreamReader将800MB文本文件加载到DataTable时,我遇到了OutOfMemory Exceptions.我想知道是否有办法从内存流中批量加载DataTable,即从StreamReader读取文本文件的前10,000行,创建DataTable,使用DataTable执行某些操作,然后将下10,000行加载到StreamReader中等等.
我的谷歌在这里不是很有帮助,但似乎应该有一个简单的方法来做到这一点.最后,我将使用SqlBulkCopy将DataTables写入MS SQL数据库,因此如果有一种比我描述的更简单的方法,我会感谢快速指向正确的方向.
编辑 - 这是我正在运行的代码:
public static DataTable PopulateDataTableFromText(DataTable dt, string txtSource)
{
StreamReader sr = new StreamReader(txtSource);
DataRow dr;
int dtCount = dt.Columns.Count;
string input;
int i = 0;
while ((input = sr.ReadLine()) != null)
{
try
{
string[] stringRows = input.Split(new char[] { '\t' });
dr = dt.NewRow();
for (int a = 0; a < dtCount; a++)
{
string dataType = dt.Columns[a].DataType.ToString();
if (stringRows[a] == "" && (dataType == "System.Int32" || dataType == "System.Int64"))
{
stringRows[a] …Run Code Online (Sandbox Code Playgroud)