小编典典

查询崩溃MS Access

sql

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

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

替代方案: 我已经考虑了一些替代方案,并希望在其中选择最耗时的方案,同时还要利用任何机会学习新知识。

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

问题: 您有什么建议?

说明:

  1. 我正在合并表,而不是串联。每个表具有不同的结构和不同的数据。这是一个标准化的CRM数据库。公司->联系人->详细信息=〜60表的详细信息。
  2. 由于迁移数据库后将破坏Access数据库,因此我想在Access中花费尽可能少的时间。

阅读 162

收藏
2021-04-14

共1个答案

小编典典

我同意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)
2021-04-14