Файл 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);
}