【问题标题】:how to split huge DBF file?如何拆分巨大的 DBF 文件?
【发布时间】: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 结构 - 我已经做到了,但不是一件容易的事)。

标签: sybase visual-foxpro foxpro dbf advantage-database-server


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-14
    • 1970-01-01
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多