读取 Paradox 数据库文件
Posted
技术标签:
【中文标题】读取 Paradox 数据库文件【英文标题】:Reading Paradox Database files 【发布时间】:2009-10-24 04:13:15 【问题描述】:我正在与一个拥有现有系统的客户合作,该系统建立在显然是 Paradox 数据库的基础上。我有数据库,格式为 zip 文件,包含 .DB、.MB 和 .PX 文件,每个表一个。
我需要获取(一些)这些数据并将其导入到使用 mysql 的 Web 应用程序中。有没有人有办法让我提取这些数据,而不涉及安装 Paradox?
如果不是,Paradox 是否以某种可读格式导出?是作为 SQL 还是可以相当容易地解析的东西?我的客户负责这个系统的人是一个志愿者(他们是一个非营利组织),所以我想去找他一个解决方案 - 因为上次我要求数据,我得到了这个,显然不好。
【问题讨论】:
拥有数据的人为我编写了一个转换程序。感谢您的所有帮助。 【参考方案1】:wikipedia article about Paradox 列出了另外两个可能很有趣的东西,都在 GPL 许可下:
pxlib: Library to read and write Paradox databases pxtools: convert a Paradox-database into a SQL-database如果您有 Delphi 并且想自己编写一个转换器(这需要 BDE 才能工作),您可以查看this article 或ConvertCodeLib on this web site 的源代码。两者都使用 TClientDataset,它可以写入 CDS(二进制格式)或 XML 文件。
【讨论】:
完美! Pxtools 网站上有使用“apt-get”安装的说明,但我没有找到添加存储库的说明。有人知道怎么做吗?【参考方案2】:用于 DOS 的 Paradox 和用于 Windows 平台的 Paradox 都将以分隔文本、固定长度文本和 Lotus 1-2-3 格式导出数据表。用于 DOS 的旧 Paradox 也编写了 Lotus Symphony,而用于 Windows 的稍微不那么古老的 Paradox 编写了一个可以通过的 Excel 5。
但是,必须有人坐下来,一张一张地导出表格,或者写一个脚本来处理它。当然,您需要安装 Paradox 才能编写脚本。
-阿尔。
【讨论】:
这就是我们最终做的事情【参考方案3】:MS 有instructions 用于使用 MS Jet 驱动程序从 Paradox 3-5 生成的文件中读取数据。它可以(至少)充当 ODBC 驱动程序,因此您可以使用它从几乎任何知道如何使用 ODBC 的东西中读取 Paradox 文件。
【讨论】:
【参考方案4】:你有几个选择:
-
获取原始 Paradox 软件,并使用它将数据库导出为CSV 格式。不幸的是,Borland 不再销售它,并且最新版本在 Windows XP 或更高版本上无法正常运行。
使用 Paradox 或 dBase/xBase ODBC 驱动程序访问数据库。 Paradox 和 xBase 非常相似,因此您可以使用适用于其中任何一个的驱动程序来提取数据。您也许可以在 firebirdsql.org 的某个地方获得 Paradox ODBC 驱动程序。
使用 Borland Delphi 编写一个程序,该程序将导出您需要的数据。正如其他人提到的,您可以获得名为Turbo Explorer 的免费版本。您还必须单独安装 BDE,因为 Turbo Explorer 不附带它。
【讨论】:
Paradox 在 XP 上运行良好。自 XP 发布以来,我们一直将它与 XP 一起使用,没有任何问题。 有趣。我尝试运行 Paradox 主应用程序的每台 XP 计算机都无法正确呈现 UI。大多数按钮没有标签等。 (以及十年后可能发生的任何其他人):这是“兼容模式”的工作。安装 Paradox,创建可执行文件的快捷方式,然后右键单击快捷方式图标以调出其“属性”菜单。【参考方案5】:我一直致力于从 Paradox 到 MySQL 的巨大数据迁移。我的一般方法是从 Paradox 导出 CSV 文件,然后从 MySQL 命令行导入 CSV 文件。但是,当 Paradox 中有 M(备忘录)字段时,该系统就会崩溃,因为该数据没有按预期被提取到 CSV 文件中。
这是我将 Paradox 数据导入 MySQL 的冗长过程,希望对某人有所帮助!
在 Paradox 中打开 Paradox 文件,导出到 dbase (.dbf) 文件。它的作用是将备忘录数据导出为 dbase 的 blob 格式。
在 Paradox 中打开 .dbf 文件。在 dbfviewer 中打开之前,可能需要将双精度格式转换为长整数或数字。双格式似乎不起作用。保存文件。
使用此程序打开 dbase 文件,然后导出到 Excel:http://dbfviewer.org/ 导出 -> XLS-File ...这将在 Excel 中打开它
现在我们需要创建一个宏,因为 Excel 没有任何本地方法可以用引号或其他任何内容将 CSV 字段括起来。我在下面粘贴了宏,但这里是我找到的参考站点。一个站点有更好的说明,但文本损坏: http://www.mrexcel.com/forum/showthread.php?320531-export-as-csv-file-enclosed-quotes http://www.markinns.com/articles/full/export_excel_csvs_with_double_quotes/
在 Excel 中,用 CTRL-F 将所有 " 替换为 ',替换...记录中的任何 " 都会搞砸
在 Excel 中按 ALT - F11 打开宏 插入 -> 模块 创建此宏以保存用双引号括起来的 CSV 文件:
子 CSVFile()
Dim SrcRg As Range
Dim CurrRow As Range
Dim CurrCell As Range
Dim CurrTextStr As String
Dim ListSep As String
Dim FName As Variant
FName = Application.GetSaveAsFilename("", "CSV File (*.csv), *.csv")
If FName <> False Then
ListSep = Application.International(xlListSeparator)
If Selection.Cells.Count > 1 Then
Set SrcRg = Selection
Else
Set SrcRg = ActiveSheet.UsedRange
End If
Open FName For Output As #1
For Each CurrRow In SrcRg.Rows
CurrTextStr = ""
For Each CurrCell In CurrRow.Cells
CurrTextStr = CurrTextStr & """" & CurrCell.Value & """" & ListSep
Next
While Right(CurrTextStr, 1) = ListSep
CurrTextStr = Left(CurrTextStr, Len(CurrTextStr) - 1)
Wend
Print #1, CurrTextStr
Next
Close #1
End If
End Sub
然后运行 -> 运行宏
设置目标 MySQL 数据库架构,其中包含我们希望 blob 去往的文本字段
在 MySQL 命令行中,这是一个如何进行导入的示例:
加载数据本地 INFILE 'C:/data.csv' INTO TABLE 表名 以“,”结尾的字段 由'"'包围 以“\r\n”结尾的行 (第 1 列,第 2 列)
【讨论】:
【参考方案6】:Paradox 是 Borland 数据库引擎的原生格式,它包含在各种 Delphi 编程产品中。所有权最近至少易手一次,但有一次有免费的“Express”版本的 Delphi 可用,可以让你编写一个简单的程序来导出这些东西。如果不再提供免费版本,则可用的最低 SKU 应包含 BDE 功能。
【讨论】:
【参考方案7】:使用 MS Access 2007,您可以使用免费的 Paradox 数据库编辑器程序 (google it) 中包含的 BDE 发行版导入 Paradox 7 及更低版本。使用如下连接:
DoCmd.TransferDatabase acImport, "ODBC Database", _
"Paradox 3.X;HDR=NO;IMEX=2;ACCDB=YES;DATABASE=C:\apache\Archive;TABLE=Messages#db", _
acReport, DailyArchiveName, "MyDatabase"
【讨论】:
我实际上发现 MS Access 可用于直接打开 Paradox DB 文件(我无需安装其他任何东西 - 尽管那可能是我组织的 SOE。)以上是关于读取 Paradox 数据库文件的主要内容,如果未能解决你的问题,请参考以下文章
是否可以在 .Net 应用程序中读取 Paradox 7.x .db 文件?
在 Windows 7(32 位)上运行 2 个读取 Paradox 表的应用程序失败
什么是 .Net 类型相当于 Paradox 数据库中的时间
将 paradox / borland 数据库作为单个文件打开