C# 使用C分析大数据而不抛出OutOfMemory

C# 使用C分析大数据而不抛出OutOfMemory,c#,excel,bigdata,C#,Excel,Bigdata,当我试图分析我的大数据中的选择性列时,总是会抛出OutOfMemory 我的大数据存储在单个Excel文件中。每个文件有超过22列和超过222330条记录 我需要读一篇选择性专栏文章,然后做统计分析。我将这些选择性列读入Datatable,然后for循环来研究内容 代码如下: OleDbDataAdapter adapter_sido_Class4 = new OleDbDataAdapter("Select [Kvalitetsklass (null)],[Sido kortv

当我试图分析我的大数据中的选择性列时,总是会抛出OutOfMemory

我的大数据存储在单个Excel文件中。每个文件有超过22列和超过222330条记录

我需要读一篇选择性专栏文章,然后做统计分析。我将这些选择性列读入Datatable,然后for循环来研究内容

代码如下:

        OleDbDataAdapter adapter_sido_Class4 = new OleDbDataAdapter("Select [Kvalitetsklass (null)],[Sido kortvåg vänster (null)], [Sido mellanvåg vänster (null)], [Sido långvåg vänster (null)]," + "[Sido kortvåg höger (null)], [Sido mellanvåg höger (null)], [Sido långvåg höger (null)]" + " from [Sheet1$]" + " where ([Kvalitetsklass (null)] = 4)", connection);

        DataTable dt_sido_Class4 = new DataTable();

        adapter_sido_Class4.Fill(dt_sido_Class4);

        for (int i = 0; i < dt_sido_Class4.Rows.Count; i++)
        {
            if (dt_sido_Class4.Rows[i].Field<double>(1) == 0)
            {
                sido_count10v++;

            }
            else if (dt_sido_Class4.Rows[i].Field<double>(4) == 0)
            {
                sido_count10h++;

            }
            else if (dt_sido_Class4.Rows[i].Field<double>(1) == null)
            {
                sido_count11v++;

            }
        }
我使用Where条件处理大量数据,而不是孔数据

在相同的代码中,我尝试添加更多的其他列并进行其他分析,但我总是遇到OutOfMemory异常。同时,我使用Dispose和Close在内存中为其他计算留出空间

您对处理这些大数据有什么建议


谢谢,

不清楚代码中的错误发生在哪里。运行调试时会发生什么?当时数据表的大小是多少?谢谢@EmmadCareem,您的意思是将61个包含大量内容的Excel文件加载到数据库中,然后使用SQL进行访问和处理。你认为这会有效吗?是的。这就是ETL/数据集市技术的意义所在。将数据加载到没有索引的表中速度非常快。您可以在几秒钟内加载数百万行。当然,内存中的DataTable会更快——我不反对这一点,但标准的ETL实践是从源代码向数据库加载数据,并对数据库数据执行分析。您还可以并行运行许多加载进程。此链接可能会有所帮助:谢谢@EmmadCareem。我想知道你是否有一些资源可以开始。另外,我也做了OutOfMemory异常,但它对我的数据仍然是无用的。