没有合适的资源?快使用搜索试试~ 我知道了~
由于工作需要,使用ACCESS数据库存储港口周围AIS设备接收到的船舶数据。由于在很多港口有采集点,因此,数据量很大,每三分钟存储一次数据的话,那么一次将有2000多新的船位数据。这些数据入库后,数据库文件大小将新增1M到2M左右。根据这个频率,一个小时数据库文件将增加40M,是960M。 为了提高数据库效率,我对数据库中存储的船舶数据进行定时删除,多保留30万条记录。但是ACCESS中执行delete后,并没有在空间上减少,而只是减少了表中的数据量,这样,达不到数据库文件变小的要求。 为了解决这个问题,从网上找到了通过写代码实现数据库文件压缩的代码。通过压缩可以释放delete后
资源推荐
资源详情
资源评论
ACCESS数据库存储大批量采集信息的问题数据库存储大批量采集信息的问题
由于工作需要,使用ACCESS数据库存储港口周围AIS设备接收到的船舶数据。由于在很多港口有采集点,因此,数据量
很大,每三分钟存储一次数据的话,那么一次将有2000多新的船位数据。这些数据入库后,数据库文件大小将新增1M到2M左
右。根据这个频率,一个小时数据库文件将增加40M,是960M。
为了提高数据库效率,我对数据库中存储的船舶数据进行定时删除,多保留30万条记录。但是ACCESS中执行delete后,
并没有在空间上减少,而只是减少了表中的数据量,这样,达不到数据库文件变小的要求。
为了解决这个问题,从网上找到了通过写代码实现数据库文件压缩的代码。通过压缩可以释放delete后占用的空间。
实际的代码如下:
============================================
BOOL CPetrelProView::CompactDatabase()
{
WriteLog("===开始数据库压缩===","COMPDB");
//::CoInitialize(NULL);
CString sDBFilePathName = GetModulePath() + "ShipSurvey.mdb";//数据库文件
CString sDstDBFilePathName = GetModulePath() + "ShipSurvey_back.mdb";//临时文件
try
{
::DeleteFile(sDstDBFilePathName);//删除已有的临时文件
CFile::Rename(sDBFilePathName,sDstDBFilePathName);//将当前库文件改名为临时文件
}
catch(…)
{
WriteLog("文件改名失败。","COMPDB");
return FALSE;
}
IJetEnginePtr jet(__uuidof(JetEngine));
BOOL bOK = TRUE;
try
{
//压缩临时文件为当前文件
CString sSrc;
sSrc.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Jet OLEDB:Database
Password=",sDstDBFilePathName);
CString sDst;
sDst.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Jet OLEDB:Engine Type=5;Jet
OLEDB:Database Password=",sDBFilePathName);
long lResult = jet->CompactDatabase(_bstr_t(sSrc),_bstr_t(sDst));
jet.Release();
//::CoUninitialize();
if(lResult == S_OK)
{
WriteLog("数据库压缩完成。","COMPDB");
WIN32_FILE_ATTRIBUTE_DATA fad;
GetFileAttributesEx(sDBFilePathName,GetFileExInfoStandard,&fad);
CString sDBSize;
sDBSize.Format("压缩后数据库大小:%.1fM",fad.nFileSizeLow/1048576.0);
WriteLog(sDBSize,"COMPDB");
}
else
{
资源评论
weixin_38589812
- 粉丝: 4
- 资源: 921
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功