2

我已经看到了许多关于如何将 DBF 文件转换为 SQL 数据库的解决方案,但是无论如何都可以在不重新编码引用 DBF 文件的程序的情况下转换表?

例如,将 DBF 文件转换为 SQL 表,然后只保留指向 SQL 数据库的指针的 dbf 文件?

目标是允许现有应用程序运行(直到我们迁移代码)但将数据保留在 SQL 中?

4

3 回答 3

2

我不认为您会找到一个工具,该工具将在 DBF 上下文中链接到 SQL,并允许您的代码无缝地通过 DBF 流向您的 SQL Server,同时保持两者都是最新的。

根据您日常事务的复杂程度或范围,我建议您设置一些定期运行的 SSIS 包,以保持 DBF 文件中的数据流向您的 SQL 表,直到您准备好全职提交 SQL。

另一种选择可能是朝着另一个方向接近它。设置链接服务器或从 SQL 中打开行集到 DBF 文件,然后在 SQL 端构建一些存储过程,使用tsql 合并语句或您必须构建的其他查询定期合并数据。

于 2012-10-09T20:31:54.170 回答
0

应用程序使用驱动程序与数据库交互。两个数据库(DBF 和任何其他数据库,例如 MySQL)如果没有它们之间的应用程序将无法相互交互,该应用程序会告诉驱动程序该做什么。因此,您现有的应用程序可以与 DBF 以及 SQLDatabase 交互,但不能使 DBF 文件与 SQL 数据库交互。
正如其他人建议的那样,您可以为此目的使用 SSIS。

于 2012-10-09T20:45:17.613 回答
0

我认为您会找到最接近的方法是使用 SyBase 的 iSQLAnywhere。他们专门挑选并集成了他们的 SQL 数据库以直接识别 .DBF 文件。但是,正如其他人所提到的,您仍然需要创建与数据库的连接才能获取数据。您可以在 iSQLAnywhere 中创建一个指向空闲表的“数据库”,而不是嵌入到单个“数据库”中,例如其他数据库...

我已经完成了一些 DBF 到 sql 的转换,并且我为保持前端一致而采取的一种方法是创建一组基于 .PRG 的过程。如果您的应用程序是 VFP 并且您始终拥有私有与默认数据会话,那么任何类都尊重表单的“数据会话”,因此如果您在“默认”数据会话下创建一个类,然后运行一个私有的表单,然后调用您的通用类来查询和打开一个表,打开的表将在“默认”会话中被识别,而不是您的表单之一。

现在,也就是说,我做的另一件事是有一个函数来打开连接并分别返回 true/false 并允许中心位置进行调试。如果连接有效,则运行给定的 sql 命令。现在,如果您希望打开给定的“别名”名称,例如“person”表,请使用 sqlexec( lcSomeCommand, "AliasYouWant" ),其余大部分将用于显示和编辑。您仍然必须使用 SQL 插入/更新来推回更改,但是使用参数化 SQL 传递非常简单。

于 2012-10-10T12:14:54.437 回答