foxpro - 在 DBF 中提取的最佳方法
问题描述
我有 3 个 Dbf 文件,每个文件大小在 2 GB 到 1.8 GB 之间。通常,他们会给我一个列表,然后将其提取到 3 dbf 文件中。我使用下面的代码来提取
Select * from dfbfile_1 where itemcode in (select itemcode from itemlist) into table tmp_1
Select * from dfbfile_2 where itemcode in (select itemcode from itemlist) into table tmp_2
Select * from dfbfile_3 where itemcode in (select itemcode from itemlist) into table tmp_3
close database all
use tmp_1
append from tmp_2
append from tmp3
此方法有效,但提取数据需要时间。是否有其他解决方法可以使我当前的提取过程更快。
解决方案
在您的示例中,将为 dfbfile_1、dfbfile_2 和 dfbfile_3 中的每一行执行子查询,即 (SELECT ITEMCODE FROM ITEMLIST)。如果 itemlist.itemcode 上没有索引,情况会特别糟糕。因此,以下可能会更好。
假设 dfbfile_1、dfbfile_2 和 dfbfile_3 是相同的结构,那么:
Select dfbfile_1.* from dfbfile_1 left join itemlist on itemlist.itemcode = f1.itemcode;
union select dfbfile_2.* from dfbfile_2 left join itemlist on itemlist.itemcode = dfbfile_2.itemcode;
union select dfbfile_3.* from dfbfile_3 left join itemlist on itemlist.itemcode = dfbfile_3.itemcode;
into dbf tmp_1
但是,如果这导致 tmp_1.dbf > 2GB,那么您将收到错误消息。无法绕过 VFP 可打开的任何文件都不能大于此限制的限制。
推荐阅读
- paypal - 在取消时查找贝宝订阅结束日期
- reactjs - 如何在 React Native 中制作微调器?我想通过 PanResponder 旋转框
- java - JDA java.lang.NoClassDefFoundError:com/fasterxml/jackson/core/exc/InputCoercionException
- ubuntu - 在 Ubuntu 20.04 LTS 中显示 Small 的特定应用程序字体
- bash - bash 5 - 从被调用函数继续 while 循环
- python - os.path.isfile() 返回 False
- nginx - Nginx proxy_pass 规则问题
- c++ - lambda 折叠表达式获取索引
- c - 多个 C 代码中的 C 外部变量
- java - Tomcat/TomEE SSL 配置与 Cloudflare