【问题标题】:Create Multiple Files having huge data, and Merge them to one file using .NET创建具有大量数据的多个文件,并使用 .NET 将它们合并到一个文件中
【发布时间】:2014-10-15 00:49:27
【问题描述】:

我的要求是,我有多个数据库(比如说 3 个)。 我将从每个数据库创建一个任何格式的文件(我对格式开放)。每个数据库在地理上都在一个数据中心上分开(因此没有跨站点 HIT 的范围)。SQL 数据库中的一个文件中的文件大小会很高(大约 300 万条记录)。

所以现在我们创建了 3 个文件,最后我想合并这 3 个文件。

我需要同样的建议:

  • 我应该创建哪种文件格式(例如 csv、xml),这样创建 考虑到体积,单个文件的数量会很容易。

  • 创建单个文件后,将很容易合并 3 文件。 (可以使用什么机制来合并活动)。 ( 全部的 合并文件中的记录将是 900 万)

任何指针都会有很大帮助。

将使用 C#、SQL

【问题讨论】:

    标签: c# sql merge


    【解决方案1】:

    运行程序的服务器/PC 是否有足够的内存先将所有数据保存在内存中?

    我的方法是通过代码获取所有数据(来自不同来源),将其合并并写入文件。

    你能把它映射到模型上吗? 如果您为每个模型提供“ToCsvString()”方法,我将按以下方式工作:

    var modelList1 = Model1.acquireData(); //Gets all records as CSV String
    var modelList2 = Model2.acquireData();
    var modelList3 = Model3.acquireData();
    
    MyFileWriter.MergeAndWrite(modelList1,modelList2,modelList3);
    

    文件编写器将是

    class MyFileWriter{
        Public static void MergeandWrite(params List<string> list){
             var hugeStringBuilder = new StringBuilder();
             foreach(var singleList : list){
                 foreach(var singleItem : singleList){
                     hugeStringBuilder.append(singleItem);
                 }
             }
        }
    
       File.WriteAllText("path/to/somewhere.csv",hugeStringBuilder.ToString())
    
    }
    

    【讨论】:

    • 不,我不想将所有数据保存在一个内存中,我的系统也不能很好地处理这个问题。另外问题是所有 3 个数据库都是不同的站点(地理上分开),所以我不想要进行跨 DB\Site 调用。
    猜你喜欢
    • 2015-02-03
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2016-11-12
    • 1970-01-01
    • 1970-01-01
    • 2019-08-10
    • 1970-01-01
    相关资源
    最近更新 更多