1

我们有一个几年前退役的遗留系统,它由一个使用 Sybase 实例 (ASE 15) 作为其数据存储的简单 Java 应用程序组成。我们现在已经转移到使用 MySQL 的新应用程序,不幸的是丢弃了旧应用程序、它的源代码以及 Sybase 服务器软件,但仍然有系统退役那天存档的转储。

我们现在需要获取这些转储上的几张大型数据表,但是对于我们的生活,无法弄清楚如何提取/导出它们。

在一个完美的世界中,Sybase 或某些第 3 方将提供一个可以直接处理转储文件的开源工具。但是到目前为止我所做的研究表明,转储文件规范是专有的,并且不存在这样的工具(我们不想在这种“复活”上花费任何钱......至少如果可能的话)。

取而代之的是,我的下一个猜测是尝试下载 Sybase 的试用版,将转储物化为真实的实时数据库,然后编写一个小的提取脚本/工具,它只连接到数据库并获取我们的数据需要。

我是在走正确的道路还是有更好的方法/工具/方法来解决这个问题?  

4

1 回答 1

1

你正朝着正确的方向前进。有 ASE 15.7 的试用版,您应该可以使用它使数据库联机。

一个数据库在线,您可以使用 Sybase bcp实用程序以您需要的任何格式逐个表提取数据。如果您不需要整个表,而只需要表的子集,则可以使用视图过滤不需要的数据,并使用bcp从视图中导出数据。

由于转储数据库中的 ASE 版本可能比您为进行恢复而安装的 ASE 版本旧,因此从技术上讲,您将进行数据库升级,因此您需要查看有关升级数据库的安装文档。

支持跨平台(Red Hat 到 Ubuntu),但如果原始数据库被转储而没有计划在不同平台上恢复它,则可能需要一些额外的步骤才能使其正常工作。您可能必须使用norecovery选项强制数据库联机,以允许您截断事务日志并刷新统计信息,然后它才能正常出现。

该操作中最复杂的部分可能是设置容器数据库,以在其中恢复转储数据库。Sybase ASE 需要容器数据库具有相同数量的设备(和磁盘碎片),并且具有相同的大小才能正确还原。如果此信息未知,则可以通过首先加载转储标头来找到它。

load database tempdb from DUMP_FILE with headeronly
于 2013-04-20T16:19:22.997 回答