dbf数据大,处理时提示 "not enought memory for file map"

zzizz 2011-12-10 12:33:44
有一个数据表(例:Table1),里边有160多万条记录,在处理的时候出现"not enought memory for file map"这样的错误。

大概流程是先把它的数据备份到另一个表中,然后再删除本表中的Data:

SELECT Table1
SET ORDER TO TAG tag1
SCAN
SELECT Table1
SCATTER MEMVAR MEMO
INSERT INTO Table1_bak From Memvar
SELECT Table1
Delte
ENDSCAN

好象是处理到Table1中间的哪个地方出错的,电脑是双核的,内存4G,C盘剩余空间还有70多G,程序是vfp6.0写的。

请各位高手指点,不胜感激,谢谢!
...全文
168 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzizz 2011-12-12
  • 打赏
  • 举报
回复
因为table1中的数据不是所有的都要备份后删除掉,要先判断的,要删除的才放到bak表中,一开始我没有讲明白,所以才用了scan的循环,一条条的判断,不能用append from,我也改为Insert 试过,也不行。
dfwxj 2011-12-12
  • 打赏
  • 举报
回复
appe和DELE的时候都带上条件就行了
十豆三 2011-12-12
  • 打赏
  • 举报
回复
你这样:
先判断,要删除的加上 删除标记,判断完后,再将带删除标记一次性导入到 bak 表中,最后再删除原表带删除标记的。
zzizz 2011-12-10
  • 打赏
  • 举报
回复
标哥,这是公司N年前开发的vfp版本,现在用的都是vfp9开发的,客户用习惯了,不愿意升级。
aabiao 2011-12-10
  • 打赏
  • 举报
回复
如果只是干这么简单的事情,干嘛不直接COPY TO呀?
6版是十几年前的产品了,干嘛不用9版呀?
十豆三 2011-12-10
  • 打赏
  • 举报
回复
改为:
Select Table1
Set Order To Tag tag1
Scan
Insert Into Table1_bak (字段1,...,字段N) )Values (Table1.字段1,...,Table1.字段N)
Select Table1
Delete
Endscan

为何一条一条复制,至少可以1000条一复制呀,或者整表复制。
dfwxj 2011-12-10
  • 打赏
  • 举报
回复
先用APPE FROM,再ZAP不就行了?

VFP6要升到VFP9,在VFP9下编译一下就行了

2,748

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧