与Sybase转储的接口

时间:2013-04-20 11:09:37

标签: database sybase etl sybase-ase

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

你走向正确的道路。有一些ASE 15.7的试用版,您应该可以使用它来使数据库联机。

一个数据库处于联机状态,您可以使用Sybase bcp 实用程序以表格为基础以您需要的任何格式提取数据。如果您不需要整个表格,只需要表格的一个子集,则可以使用视图过滤不需要的数据,并使用 bcp 从视图中导出数据。

由于转储数据库中ASE的版本可能比您要安装的ASE版本旧,以进行还原,因此您将在技术上进行数据库升级,因此您需要查看有关升级的安装文档数据库。

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

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

load database tempdb from DUMP_FILE with headeronly