MDB文件是从ADOX扩展以编程方式创建的.此文件大小是否异常大

本文关键字:创建 文件大小 是否 异常 方式 编程 文件 ADOX 扩展 MDB | 更新日期: 2023-09-27 18:34:41

我使用此论坛中的代码创建了一个将数据集对象导出到 MDB 文件的方法:http://www.xtremedotnettalk.com/showthread.php?t=93599

我的数据集只包含一个表,5 列,大约 100k 行。生成的 MDB 文件的大小为 50 MB。不知道是不是太大了?

如果您有更好的方法将数据集导出到 MDB 文件以减小文件大小,请告诉我。

MDB文件是从ADOX扩展以编程方式创建的.此文件大小是否异常大

50MB * 1024KB/MB * 1024byte/KB = 52428800 字节。

52428800/100000 行/5 列/行 = 每列 ~105 字节。

根据您定义列的方式,这可能并不出格...特别是当我们还没有考虑任何索引、页面大小和填充等时。

我找到了一种以编程方式修复和压缩MDB文件的方法:

    private static void CompactAndRepairMDB(string FilePath)
    {
        string FileName      = Path.GetFileNameWithoutExtension(FilePath);
        string FileName_Temp = Path.GetFileNameWithoutExtension(FilePath) + "_CompactAndRepair";
        string FilePath_Temp = FilePath.Replace(FileName, FileName_Temp);
        JRO.JetEngine oJetEngine = new JRO.JetEngine();
        string SourceConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +
                      "Data Source=" + FilePath + ";" + 
                      "Jet OLEDB:Engine Type=5;";
        string DestConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +
                    "Data Source=" + FilePath_Temp +";" +
                    "Jet OLEDB:Engine Type=5;";
        //Compact the database (makes a new copy)
        oJetEngine.CompactDatabase(SourceConn, DestConn);
        //Overrite the old new
        File.Copy(FilePath_Temp, FilePath, true);
        //Delete Temp File
        File.Delete(FilePath_Temp);
    }