C# 在磁盘上而不是内存中填充C数据表,以避免内存溢出

C# 在磁盘上而不是内存中填充C数据表,以避免内存溢出,c#,datatable,C#,Datatable,我需要从两个不同的数据库中填充两个DataTable,以进行一些比较和只读操作。这需要我在这两个数据表中选择* 但是,我需要检索的表在两个数据库中都包含大约300万行。填充时,我得到一个OutOfMemory例外 是否有可能将这些数据表放在磁盘上而不是内存中? 在这两个巨大的集合上,您有没有看到其他比较/执行只读的解决方案?我需要做的事情使得按行的子集进行批处理变得非常复杂。我猜执行此操作的理想/有效方法是在数据库中进行。不幸的是,您的两个表位于两个独立的数据库中,这可能会导致复杂性 这些表与S

我需要从两个不同的数据库中填充两个DataTable,以进行一些比较和只读操作。这需要我在这两个数据表中选择*

但是,我需要检索的表在两个数据库中都包含大约300万行。填充时,我得到一个OutOfMemory例外

是否有可能将这些数据表放在磁盘上而不是内存中?
在这两个巨大的集合上,您有没有看到其他比较/执行只读的解决方案?我需要做的事情使得按行的子集进行批处理变得非常复杂。

我猜执行此操作的理想/有效方法是在数据库中进行。不幸的是,您的两个表位于两个独立的数据库中,这可能会导致复杂性

这些表与SQL server实例中的表位于同一服务器上的两个不同数据库中,还是位于两个单独的服务器中?如果它们在同一个服务器/实例中,那么您可能可以在数据库服务器上执行比较逻辑


否则,如果这些表位于不同的服务器上,那么是否有可能在数据库之间设置某种类型的复制,以便您可以将两个数据集放入一个数据库中,在该数据库中执行比较?

如何按键对它们进行排序

i、 e


然后你可以进入set1,切换到set2,返回set1。。。使迭代更容易。

是否需要内存中的整个行集来开始比较?如果没有,你能一次批处理100k或其他什么吗?我需要整个集合来匹配DataTable对象之间的键。如果有人想给出有用的答案,我想我们需要更多的内容。您还没有指出您正在执行的操作-可能有人能够建议一个可以轻松批处理的好算法。您没有指明DB服务器—如果服务器支持跨服务器查询,那么这些操作可以在SQL中完成。在完成操作后,您也不会指示正在执行的操作-也许您可以将select*压缩为您真正需要的列集?我需要整个集合可以访问以匹配DataTable对象之间的键-为什么?不能从两个表中读取相同键值范围的批处理吗?不幸的是,一个是MSSQL,另一个是SYBASE。我需要调查这件复制的事情也许我对此一无所知topic@J.G对不起,我帮不上忙了。复制也不是我真正的知识领域,但它似乎可能是正确的方法。你可能已经找到了,但我注意到了Sybase上的这本指南。
set1    A  A  A  B  C            E
                 |            
set2             B       D