我使用此论坛中的代码创建了一种将 DataSet 对象导出到 MDB 文件的方法: http ://www.xtremedotnettalk.com/showthread.php?t=93599
我的数据集只包含一个表,5 列,大约 100k 行。生成的 MDB 文件大小为 50 MB。我想知道它是否太大异常?
如果您有更好的方法将 DataSet 导出到 MDB 文件以减小文件大小,请告诉我。
我使用此论坛中的代码创建了一种将 DataSet 对象导出到 MDB 文件的方法: http ://www.xtremedotnettalk.com/showthread.php?t=93599
我的数据集只包含一个表,5 列,大约 100k 行。生成的 MDB 文件大小为 50 MB。我想知道它是否太大异常?
如果您有更好的方法将 DataSet 导出到 MDB 文件以减小文件大小,请告诉我。
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);
}