我正在构建一个Access数据库,该数据库是从网站上的Excel转储中提供的,用于处理事务数据。这些事务都具有唯一标识符,但状态将随着事务的处理而更改。
以前,如果我们需要分析状态的变化,我们会保留每周的Excel转储并进行挖掘。我们的主人'数据表是从最新转储运行的40,000行Excel文件,这意味着我们丢失了旧的状态数据。我无法访问存储所有这些信息的后端数据库(如果有的话?),只能访问Excel生成的报告。
现在我正在将数据迁移到Access中,有哪些选项可以捕获特定事务可能经历的不同阶段?
答案 0 :(得分:1)
一种相当直接的方法是创建一个[ArchiveTable]表,其结构与Main表相同(在Access中,Copy > Structure Only
),然后将[ArchivedOn]日期/时间列添加到[ ArchiveTable]。
当您获得新的Excel工作表时,可以将其导入Access(例如,通过VBA中的DoCmd.TransferSpreadsheet
),然后执行以下操作:
INSERT INTO ArchveTable (fieldname, fieldname, ..., ArchivedOn)
SELECT fieldname, fieldname, ..., Now() AS ArchivedOn FROM MainTable
WHERE MainTable.TransactionID IN (SELECT TransactionID FROM ImportTable)
...然后对[ArchiveTable]中的数据进行一些“健全性检查”,以确保在继续...之前复制了所有内容...
DELETE FROM MainTable
WHERE MainTable.TransactionID IN (SELECT TransactionID FROM ImportTable)
INSERT INTO MainTable (fieldname, fieldname, ...)
SELECT fieldname, fieldname, ... FROM ImportTable