我有一个.mdb
文件,大小为70MB。
删除文件中包含的所有记录后,大小仍为70MB。
如何缩小我的.mdb
文件?
答案 0 :(得分:16)
答案 1 :(得分:9)
打开mdb并执行“压缩和修复”。这将减小mdb的大小。
您也可以将'Compact on Close'选项设置为on(默认情况下关闭)。
以下是一些其他信息的链接: http://www.trcb.com/computers-and-technology/data-recovery/ways-to-compact-and-repair-an-access-database-27384.htm
答案 2 :(得分:4)
Microsoft Access数据库引擎提供了一个CompactDatabase方法,该方法可以生成数据库文件的压缩副本。在调用CompactDatabase之前必须关闭数据库文件。
文档:
这是一个使用DAO复制和压缩MDB文件的Python脚本:
import os.path
import sys
import win32com.client
# Access 97: DAO.DBEngine.35
# Access 2000/2003: DAO.DBEngine.36
# Access 2007: DAO.DBEngine.120
daoEngine = win32com.client.Dispatch('DAO.DBEngine.36')
if len(sys.argv) != 3:
print("Uses Microsoft DAO to copy the database file and compact it.")
print("Usage: %s DB_FILE FILE_TO_WRITE" % os.path.basename(sys.argv[0]))
sys.exit(2)
(src_db_path, dest_db_path) = sys.argv[1:]
print('Using database "%s", compacting to "%s"' % (src_db_path, dest_db_path))
daoEngine.CompactDatabase(src_db_path, dest_db_path)
print("Done")
答案 3 :(得分:1)
使用python,您可以使用pypyodbc库(.mdb或.accdb)压缩
import pypyodbc
pypyodbc.win_compact_mdb('C:\\data\\database.accdb','C:\\data\\compacted.accdb')
(source)
然后,您可以使用shutil将compacted.accdb复制回database.accdb:
import shutil
shutil.copy2('C:\\data\\compacted.accdb','C:\\data\\database.accdb')
(source)
注意:据我所知,对于带有ODBC的Access DB,python及其库必须是32位(link)。此外,这些步骤可能仅适用于Windows操作系统。