批量将Corel Paradox 4.0表格转换为CSV/SQL - 通过PHP或其他脚本

1 投票
2 回答
823 浏览
提问于 2025-04-16 21:37

最近,我开始研究如何将大约16000个Corel Paradox 4.0数据库表转换成更现代的格式(比如CSV、SQL等)。我的客户已经在一个老旧的平台上使用这些数据超过20年,主要是因为一些复杂的后勤问题。现在,我在考虑使用PHP,因为它有一个专门处理Paradox数据的库。虽然我对如何编写转换代码(也就是简单地调用一些打开、关闭和写入文件的函数)比较有信心,但我担心错误检测的问题。我希望在运行脚本时,不要花几个小时等待,最后却发现导出的16000个文件都是损坏的。

另外,我对调用文件的逻辑循环也不是很确定。我在想,程序可以生成一个所有文件的列表,并且带上合适的扩展名,然后逐个处理这个列表,但我不确定这样做是否适合这么大的目录。

这个程序是在本地的Windows 7 x64系统上运行,使用的是XAMPP(数据库是内部使用的),所以我不确定单纯用PHP是否是最好的选择。我在想,使用Python或者其他一些轻量级的脚本语言是否会更适合处理这个问题。

非常感谢大家的任何见解和帮助。

2 个回答

1

这可能已经太晚了,帮不了你,但为了后人留个记录...

如果你有一个Corel Paradox的工作环境,可以直接用它来帮助你过渡到新系统。

我们把Corel Paradox 9中的表格转移到了我们建立的Oracle数据库中。我们通过连接到这个数据库(用一个别名,比如SCHEMA001)来实现,然后在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查询,把所有的列名转换成大写来解决了这个问题。

我们是这样调用这个程序的:

Var targetTable String tc TCursor endVar

method run(var eventInfo Event) targetTable = "SomeTableName" writeTable(targetTable) msgInfo("TransferData.ssl--script finished", "就这些,朋友们!" ) return endMethod

0

如果你只是想转换数据,我猜这个过程你可能只做一次,那么你可以在本地运行一个命令脚本。这样的话,你就不需要一个网站,也不需要用到XAMPP。至于你用什么语言,这并不是最重要的,除非你提到PHP有一个库。那Python或者其他语言有没有类似的库呢?

关于你担心的错误检测,为什么不先用一个文件测试一下你的脚本呢?如果这个转换成功了,你可以再建立一个循环,测试五个文件,比如设置一个计数器,在处理到五个文件后结束这个过程。如果这样也没问题,你就可以继续处理剩下的文件。你还可以记录日志,每处理100个文件就输出一次结果。这样你就能看到你的脚本是在正常运行,还是在闲着。

撰写回答