提问人:theonlylos 提问时间:7/15/2011 更新时间:9/27/2016 访问量:802
将 Corel Paradox 4.0 表批量转换为 CSV/SQL -- 通过 PHP 或其他脚本
Batch converting Corel Paradox 4.0 Tables to CSV/SQL -- via PHP or other scripts
问:
最近,我开始探索将大约 16k Corel Paradox 4.0 数据库表(我的客户使用 20 多年的遗留平台,主要是由于大量的后勤问题)转换为更现代的格式(即 .CSV、SQL 等)的方法,到目前为止,我一直在研究 PHP,因为它有一个专门用于 Paradox 数据处理的库,但是虽然我对如何编写转换代码(即简单地调用)相当有信心一些文件打开、关闭和写入功能)我担心错误检测并确保在运行脚本时,我不会花费数小时等待它运行,只是为了看到导出的 16k 损坏文件。
此外,我不完全确定调用文件的逻辑循环。我正在考虑让程序生成具有适当扩展名的所有文件的列表,然后遍历该列表,但是我不确定这是否适合这种大小的目录。
这是在具有 XAMPP 设置的本地 Windows 7 x64 系统上运行的(数据库都是内部使用的),所以我不确定纯 PHP 是否是最好的主意——所以我一直在想 Python 或其他一些轻量级脚本语言是否更适合处理这个问题。
非常感谢您的任何见解和帮助,
答:
如果您打算只转换数据,我想这是一个过程,您只需执行一次,您将在本地运行脚本作为命令脚本。为此,您不需要网站,因此不需要 XAMPP。你使用什么语言是次要的,除非你说PHP有一个库。python 或其他人有吗?
关于你对错误检测的担忧,为什么不先只用一个文件测试你的脚本。如果转换成功,您可以构建循环并在五个文件上进行测试,即有一个计数器在该数字之后结束该过程。没关系,你可以继续剩下的。您还可以写入日志数据,并为每处理 100 个文件转储一个结果。这样,您可以查看脚本是否正在执行某些操作或处于空闲状态。
评论
这无疑为时已晚,无法帮助你,但为了后代......
如果一个人有一个 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 的列名中获得小写字母,这很痛苦。我们通过向 upper() 编写一个快速的 Oracle 查询来纠正所有生成的列名。
我们这样称呼该过程:
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
评论