【问题标题】:Which COBOL database do I have?我有哪个 COBOL 数据库?
【发布时间】:2018-08-06 13:29:07
【问题描述】:

一个简单但,嘿,仍然很奇怪的问题。希望在好的部分,在整个互联网上找不到合适的答案。

首先,它看起来很像 COBOL(ACUCOBOL?),但我不确定。

我有带有扩展名的二进制文件:.AC、.vix、.SC;每个数兆字节。大多数文件都是成对的,例如。 ADDRESSES.AC + ADDRESSES.vixCOMPANIES.SC + COMPANIES.vix。 在这些文件的中间我可以看到部分记录,但它似乎是一组二进制文件。

我知道 Cobol 数据库中没有人类可读的索引、地图、方言、配置文件、标题 - 没有任何东西可以使用一些普通的文本工具进行解析。也没有 CPY、RDD、XFD 文件。只是不时包含大量二进制数据和部分记录/ID(?)的文件。所以我可以确定,例如,一个文件包含一组地址、下一个明显的销售、下一个客户数据等。

问题是:

如何确定我使用的是哪个版本的 COBOL 数据库? (主要是为了获得合适的工具来提取数据。)

如何将此数据库转换为可以解析并移动到其他任何东西(甚至是 Excel)的东西?

我无法访问使用此数据库的计算机,因为它多年来一直在垃圾箱的深处,没有其他任何东西,只有一个包含数据库文件的文件夹。

有人遇到同样的问题吗?

这里是示例:

【问题讨论】:

  • 我没有使用 ACUCOBOL 的经验,但我怀疑你不会很幸运地找到一个可以读取索引文件的实用程序(没有安装 ACUCOBOL 版本)。您可能必须对数据进行逆向工程才能接近检索它。祝你好运。

标签: database cobol acucobol-gt


【解决方案1】:

如何确定我使用的是哪个版本的 COBOL 数据库?

您使用的不是数据库而是 ISAM 文件,非常很可能是 ACUCOBOL GT 文件格式 5。有关格式的详细信息,请参阅official documentation

主要是为了获得合适的工具来提取数据。

正确的工具是vutil 和命令vutil -u -t ADDRESSES.AC ADDRESSES.TXT,它将为您提供一个很可能是固定长度形式的文本文件(可变形式相对不常见)-> 第 1 步。

由于数据可能包含二进制字段,您必须调查数据以检查实际格式/记录布局 --> step2,并从二进制字段计算十进制值 --> step 3。 但是有一些工具可以帮助您完成第 2 步和第 3 步,我可以推荐 RecordEditor 您将在其中看到数据,可以设置字段宽度/类型(定义记录布局,类似于 Excel 导入,但也允许您使用二进制 COBOL 类型)并将生成的文件转换为 CSV。

如果您无权访问vutil(或Windows 上的vutil32.exe),您可能会找到有权访问此工具并为您转换数据的人;或获取评估版(将是旧下载,ACUCOBOL-GT 的新产品所有者是 MicroFocus,仅提供其不兼容的“Visual COBOL”产品的评估版)。

或者,您可以对格式进行逆向工程(记录布局在 vix 文件中,用十六进制编辑器打开它并深入研究),但这可能是一项更大的任务...

总结:

  • 决定如何进行第 1 步,vutil/vutil32.exe 是最简单的方法
  • 1:将数据转换为文本格式
  • 2:调查文件并检查记录布局(字段宽度、类型)
  • 3:加载文件,转换二进制字段,导出为csv

【讨论】:

  • 对不起,有人告诉我这是 COBOL。谢谢你的答案!顺便说一句,如果 vutil 不可用(也发现),是否可以将这些文件连接到现有的 MySQL、MSSQL、任何正在运行的服务器,因为它是 ISAM,而不是 InnoDB 或其他,所以它不应该干扰特权和很快?我几乎可以使用任何数据库服务器,电脑准备就绪。
  • COBOL,但没有像“COBOL 数据库”这样的东西,这些是用于 COBOL 的 ISAM 文件,您可以通过 COBOL 访问它们,通过工具特定的 ISAM 格式(在您的情况下为 ACUCOBOL VISION 版本 5,这意味着您将使用 ACUCOBOL vutil32.exe)或使用适当的 COBOL 运行时库(wrun32.dll [需要 ACU 许可证文件才能运行])或对格式。
  • 我建议寻找可以访问 ACUCOBOL vutil 的人。
【解决方案2】:

你肯定有视觉索引数据文件,因为你会看到匹配的 .vix 文件,如果你没有 .vix 文件,那么它是一个具有一组记录的相对文件。

如果您在工具菜单下有 Acubench,则有一个视觉文件实用程序选项,您可以从那里将视觉数据卸载到制表符分隔的文本文件中。

您可以从那里以制表符分隔文件的形式导入 Excel,然后重新保存为 csv 文件。

【讨论】:

    【解决方案3】:

    所以毕竟我认为这是 ISAM 版本。

    为了解决这个问题,需要以下工具:

    1. 首先是一些迁移工具。就我而言,它是 ISMIGRATE GUI WIzard:

    这个包来自isCOBOL 2017 R1,你可以找到一些免费的demo下载。请注意,您不需要安装所有软件包,只需安装此迁移工具。 然后您可以使用 ctree2 -> jisam 转换或尝试所有可用选项(并非每个选项都是可用的,因为缺少付费的库)

    1. 转换后你会得到这样的结果:

    在更糟糕的情况下,会有一些 ASCII 特殊字符,但您可以使用 Notepad++ 甚至 Excel 等工具将它们删除。我的意思是通过十六进制代码搜索它们并用空格替换(注意,空格将替换一个丢失的字符以保留列顺序)

    注意,您也可以使用从 MS Access/MS Excel 导入 ASCII 文本文件的特殊功能。真的很有帮助。

    1. 要正确定位所有内容,剪切此文件并进行所有调整(并导出到例如 csv),您可以使用 http://record-editor.sourceforge.net 那是免费的。请注意,经过几次试验后,我注意到,其他甚至付费的工具对您没有帮助。问题在于第一点:转换。

    2. 为确保一切正常,您甚至可以运行 MS Access 或类似软件来查看如何创建外键并对所有数据库进行逆向工程。有了工作预览,就可以很容易地在更大的范围内做到这一点,例如在 PostgreSQL/Oracle 中。

    就是这样。我希望它对某人有用。

    什么是不成功

    1. 建立 Actian Vector 服务器;它确实是一款很棒的免费工具,但对您没有太大帮助

    2. 尝试一些在线工具(尽管谁知道数据将被发送到哪里)

    3. 任何其他 ASCII 编辑器,在我的情况下导致其中许多崩溃,我想是因为文件大小和一些控制字符 (?)

    【讨论】:

      猜你喜欢
      • 2021-02-24
      • 2014-04-17
      • 1970-01-01
      • 2010-09-08
      • 2021-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-13
      相关资源
      最近更新 更多