一个相对繁琐(但直截了当)的解决方案是将大型数据库分成较小的数据库,对较小的数据库进行转换,然后重新组合它们。
这样做的另一个好处是,如果某个块中的文本由于某种机会是无效日期,那么很容易找到它(因为块大小较小)。
假设您在表上有某种整数键,范围从1到(比如)10000000,您可以执行查询,例如
SELECT *
INTO newTable1
FROM yourtable
WHERE yourkey >= 0 AND yourkey < 1000000
SELECT *
INTO newTable2
FROM yourtable
WHERE yourkey >= 1000000 AND yourkey < 2000000
等等,确保单独输入和运行这些查询,因为如果您尝试一次运行多个查询,Access似乎会给出语法错误。
如果您的键是其他内容,则可以执行相同类型的操作,但您必须对WHERE子句进行更加巧妙的处理。
当然,最后要考虑的一件事情是,如果您能够承受,就迁移到具有更强大功能的不同数据库。我猜您有理由认为这并不容易,但是随着您继续使用Access,您可能也会遇到其他问题,特别是在处理大量数据时。
编辑
既然您仍然遇到了一些麻烦,请查看以下详细信息,希望您能看到我之前没有描述清楚的地方:
在此,您可以看到我创建了类似于您描述的“OutputIDrive”表。我有一个ID标签,尽管我只有三个条目。
在这里,我创建了一个查询,进入了SQL模式,并输入了适当的SQL语句。在我的情况下,因为我的查询只抓取值>= 0和<2,我们只会得到一行...ID = 1的那一行。
当我点击运行按钮时,弹出窗口告诉/警告我将要发生的事情...它将把一行数据放入新表中。这很好...这就是我们要找的。我点击“确定”。
现在我们的新表已经被创建,当我点击它时,我们可以看到我们的一行数据(ID = 1)已经复制到了这个新表中。
现在,您应该能够仅修改SQL查询中的表名和数字值,然后再次运行它。
希望这可以帮助您解决任何问题。
编辑2:
啊哈!这就是诀窍。您必须逐个输入并运行Access中的SQL语句。如果您尝试放入多个语句并运行它们,您将会得到错误。因此,请先运行第一个语句,然后擦除它并运行第二个语句,以此类推,您应该没问题。我认为这样就可以了!我已经编辑了上面的内容,使其更清晰明了。