我有一个包含近700,000条记录的postgres表,我将该表导入MS访问(通过ODBC数据源),最终只有250,000条记录。
我从一个空的MS访问数据库(520千字节)开始。选择(外部数据)/(新数据源)/(来自其他来源)/(ODBC数据库)/(导入源数据)/(机器数据源)我选择我的ODBC postgres数据库,然后选择我想要的表,等待30秒后,我收到一个消息框,说明所有对象都已成功导入,然后询问我是否要保存导入步骤。
没有错误消息,但我的MS访问版本表中的行数约为250,000。
其他信息......
为什么我会丢失记录,我该怎么做才能治愈它?
由于
答案 0 :(得分:0)
如果您一次尝试从数据库中“覆盖”所有记录,则ODBC驱动程序将在某个时刻停止提取并在没有警告的情况下返回它所拥有的内容。它很烦人。据我所知,这与32位限制无关。
解决此问题的方法是不要一次获取所有记录,而是使用驱动程序上的declare / fetch选项。您可以在ODBC设置上永久执行此操作,方法是转到ODBC属性,选择“数据源”,然后选择“页面2”,检查“使用声明/提取”并设置缓存(行数)大小。我推荐一个介于5,000到50,000之间的数字。每个批次代表对数据库的命中,因此您希望它开始时相当大。
从所有实际目的来看,使用declare / fetch对您的应用程序完全透明。你甚至都不会注意到。您将在数据库管理员端,但如果您的提取大小足够大,则不会出现问题。
您还可以对特定查询的连接字符串进行一次性编辑。您可以添加以下内容以使其工作:
UseDeclareFetch=1;Fetch=25000;