如何拆分巨大的 DBF 文件?
Posted
技术标签:
【中文标题】如何拆分巨大的 DBF 文件?【英文标题】:how to split huge DBF file? 【发布时间】:2018-03-03 10:26:12 【问题描述】:任务是从非常旧的 ERP 系统中拆分出巨大的 DBF 文件。
文件大小为: 表 1.dbf - 5307 MB 表 1.cdx - 288 MB table1.fpt - 617 MB
我不明白它是如何在 32 位 Windows 上工作的……但它可以工作。
您知道如何将表格拆分为 2 个文件吗?
例如,一个文件中 10% 的最后记录和另一个文件中 90% 的最旧记录。
最好在我的环境(Win10 64位)中完成任务。
【问题讨论】:
您可以使用 copy to ... for(或 while)等命令进行拆分。或者 select * from .. where into .... 但是,您确定这些数字吗?不现实。 你能给我提供任何免费的 sql 管理器吗? 是的,VFPOLEDB 是免费分发的。您可以将它与任何语言一起使用,例如 C#、Go、T-SQL ... 感谢您的回答。我尝试了这个连接字符串:Provider=vfpoledb;Data Source=C:\temp\3\archivbz.dbf。当我尝试建立连接时,我得到错误“无效的查找偏移”。你有什么想法吗? 连接字符串应该是:Provider=vfpoledb;Data Source=C:\temp\3 但是对于任何超过 2 Gb 的文件,我不希望它能够成功读取。您是说它有效,也许它使用的是 ADS 的 64 位驱动程序?我个人会使用 C# 或 Go 之类的东西来拆分那个低级(但这需要很好地了解 dbf、fpt 结构 - 我已经做到了,但不是一件容易的事)。 【参考方案1】:这里的底线是,如果 table1.dbf > 2GB,那么不是 Visual FoxPro 正在使用它,Visual Foxpro OLEDB 驱动程序将无法读取它。
更有可能是SAP's Advantage Database Server
因此,我将研究为此获取 ODBC\OLEDB 驱动程序并使用它来提取数据。
【讨论】:
看来你说得很对。我可以在 Advantage Data Architect 中打开表格。但和以前一样,我找不到执行任何 SQL 的方法,也找不到主要的方法来拆分表。【参考方案2】:USE table1
从找到你要拆分的行(你将从找到的记录拆分到最后一条记录)
COPY TO table2 REST
确保 table2 已生成。如果 table2 已创建,则再次定位到 table1 中的同一行。
DELETE REST
【讨论】:
以上是关于如何拆分巨大的 DBF 文件?的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 javascript 或 jquery 读取巨大的文本文件?