如何压缩MS Access数据库

时间:2010-08-07 01:52:11

标签: ms-access

我有一个.mdb文件,大小为70MB。

删除文件中包含的所有记录后,大小仍为70MB。

如何缩小我的.mdb文件?

4 个答案:

答案 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操作系统。