1

最近,我开始着手探索将大约 16k Corel Paradox 4.0 数据库表(我的客户在 20 多年来一直使用遗留平台,主要是由于大量的后勤问题)转换为更现代的格式(ieCSV、SQL 等)的方法。质量,到目前为止,我一直在研究 PHP,因为它有一个专门用于 Paradox 数据处理的库,但是我对如何编写转换代码相当有信心(即简单地调用一些文件打开、关闭和写入函数)我担心错误检测并确保在运行脚本时,我不会花费数小时等待它运行,只看到导出的 16k 损坏文件。

另外,我不完全确定调用文件的逻辑循环。我正在考虑让程序生成具有适当扩展名的所有文件的列表,然后遍历该列表,但是我不确定这是否适合这种大小的目录。

这是在带有 XAMPP 设置的本地 Windows 7 x64 系统上运行的(数据库都是内部使用的)所以我不确定纯 PHP 是否是最好的主意——所以我一直想知道 Python 或其他一些轻量级脚本语言可能更适合处理这个问题。

非常感谢您的任何见解和帮助,

4

2 回答 2

1

这无疑为时已晚,无法帮助您,但对于后代...

如果您拥有 Corel Paradox 工作环境,则可以使用它来简化过渡。

我们将我们拥有的 Corel Paradox 9 表移动到我们通过连接到模式(使用 SCHEMA001 等别名)构建的 Oracle 模式中,然后在 Paradox 内部的脚本中编写此过程:

Proc writeTable(targetTable String) errorTrapOnWarnings(Yes) try tc.open(targetTable) tc.copy(":SCHEMA001:" + targetTable) tc.close() onFail errorShow() endTry endProc

人们可以通过更多的 Paradox 编程来高度改进这一点,但你明白了。不过,我们发现的一件事是,Paradox 在创建 Oracle 版本时对列名使用双引号,这意味着您可以在 Oracle 中的列名中使用小写字母,这很痛苦。我们通过编写一个快速的 Oracle 查询来纠正这个问题,upper() 所有结果列名。

我们这样调用程序:

Var targetTable String tc TCursor endVar

method run(var eventInfo Event) targetTable = "SomeTableName" writeTable(targetTable) msgInfo("TransferData.ssl--script finished", "That's all, folks!" ) return endMethod

于 2016-09-27T15:17:55.927 回答
0

如果您打算只转换我猜是一个过程的数据,那么您只需将脚本作为命令脚本在本地运行一次。为此,您不需要网站,因此不需要 XAMPP。除了你说 PHP 有一个库之外,你所采用的语言是次要的。python或其他人有吗?

关于您对错误检测的担忧,为什么不先只用一个文件测试您的脚本。如果转换成功,您可以构建循环并在五个文件上进行测试,即有一个计数器在该数字之后结束该过程。没关系,你可以继续剩下的。您还可以为每处理 100 个文件写入日志数据并转储一个结果。这样你就可以看到你的脚本是在做某事还是空闲。

于 2011-07-15T17:59:42.927 回答