Skip to main content
 首页 » 编程设计

python之查询使 MS Access 崩溃

2025年05月04日14xing901022

任务: 我正在将数据库从 MS Access 迁移到 Maximizer。为了做到这一点,我必须在 MS ACCESS 中获取 64 个表并将它们合并为一个。输出必须采用 TAB 或 CSV 文件的形式。然后将其导入 Maximizer。

问题: Access 无法执行看起来如此复杂的查询,因为它会在我运行查询时崩溃。

备选方案: 我已经考虑了一些备选方案,并且想做其中最不耗时的一个,同时也利用任何机会学习新东西。

  1. 将每个表导出到 CSV 中并导入到 SQLight 中,然后使用它进行查询以执行与 ACCESS 无法执行的操作相同的操作(合并 64 个表)。
  2. 将每个表导出到 CSV 文件中并编写脚本来 Access 每个表并将 CSV 文件合并到一个 CSV 文件中。
  3. 以某种方式连接到 MS ACCESS DB (API),并编写脚本以从每个表中提取数据并将它们合并到一个 CSV 文件中。

问题: 你有什么建议?

澄清:

  1. 我正在合并表格,而不是串联表格。每个表都有不同的结构和不同的数据。它是一个标准化的 CRM 数据库。公司->联系人->详细信息 = ~ 60 个详细信息表。
  2. 由于 Access 数据库在数据库迁移后会被破坏,因此我希望尽可能少地花在 Access 上。

请您参考如下方法:

我同意 FrustratedWithFormsDesigner。 #2 似乎是最简单的方法。

如果您决定走那条路(需要 pyodbc ),这里有一些经过测试的代码:

import csv 
import pyodbc 
 
MDB = 'c:/path/to/my.mdb' 
DRV = '{Microsoft Access Driver (*.mdb)}' 
PWD = 'mypassword' 
 
conn = pyodbc.connect('DRIVER=%s;DBQ=%s;PWD=%s' % (DRV,MDB,PWD)) 
curs = conn.cursor() 
 
SQL = 'SELECT * FROM mytable;' # insert your query here 
curs.execute(SQL) 
 
rows = curs.fetchall() 
 
curs.close() 
conn.close() 
 
# you could change the 'w' to 'a' for subsequent queries 
csv_writer = csv.writer(open('mytable.csv', 'w'), lineterminator='\n') 
 
for row in rows: 
    csv_writer.writerow(row)