Файл MDB создается программно из расширения ADOX. Не слишком ли велик размер этого файла?

Я использовал код на этом форуме для создания метода экспорта объекта DataSet в файл MDB: http://www.xtremedotnettalk.com/showthread.php?t=93599

Мой DataSet содержит только одну таблицу, 5 столбцов с около 100k строк. Размер файла MDB составляет 50 МБ. Интересно, он слишком большой?

Пожалуйста, дайте мне знать, если у вас есть лучший метод экспорта DataSet в файл MDB для меньшего размера файла.

2 ответа

Решение

50 МБ * 1024 КБ / МБ * 1024 байта / КБ = 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);
    }
Другие вопросы по тегам