0

我有一个大型 ASCII 数据集(2.7gb),我相信它是 IMS 分层格式。我不确定如何访问数据以将其放入可用的数据库中,我猜是 SQL,但我对其他解决方案持开放态度。这是数据库附带的“布局”,如果它有帮助的话......

布局截图

4

2 回答 2

0

如果您没有编程背景,那您就有大麻烦了!!!。Excel MsAccess 对您帮助不大。

所以答案是:

聘请一些有 Cobol / Cobol 转换经验的程序员!!!


UIC-MN-H10-段

Cobol Copybook 会告诉您文件的格式。UIC-MN-H10-SEGMENT 的格式是

2 byte segment id (10 ???)
4 byte year
2 Byte Month 
4 byte average injection pressure etc

这是一个多记录文件。

您可能会使用的工具

  • RecordEditor可能能够显示文件(大小可能是个问题)。RecordEditor也需要一些时间来适应

  • Cobol例如GNU Cobol将需要 Cobol 程序员

  • Java / JRecord - 需要java程序员

  • 如果它只有一条记录(不太可能),Cobol2Csv

为了给出更有意义的完整答案,请提供文本格式的 Cobol copybook 和一些示例数据

于 2018-05-22T13:20:52.340 回答
0

所以你在这里遗漏了一些关键信息。除了您粘贴的布局之外,您实际上还需要 IMS 数据库描述符 (DBD) 文件。IMS DBD 文件将描述数据库的结构。IMS 数据库中可以包含许多段(也称为表),DBD 将描述这些段以及其他信息,例如这些表的大小。

实际记录将以深度优先格式存储在平面文件(可能是您提到的 2.7gb ASCII 文件)中。因此,假设您有两个段 A 和 B,其中 B 是 A 的子项。您的平面文件可能看起来像这样 A1,B1,B2,B3,A2,B4,B5 其中 B1、B2 和 B3 是 A1 的子项和B4 和 B5 是 A2 的子级。这件事的原因是因为您的布局信息仅提供特定段结构的覆盖。

因此,如果您的数据库有多个 UIMNH10 段,您将不知道在 ASCII 文件中的哪个位置应用布局的起点。

现在让我们在这里做一个巨大的假设,即您的数据库只有一个段 UIMNH10。在这种情况下,您的 ASCII 文件将如下所示:A1、A2、A3、A4。这非常简单,因为您会重复地将布局应用于数据。

幸运的是,您的数据结构非常简单,因为它都是字符数据。您会将 PIC X(n) 解释为长度为 n 的字符串。类似地,对于 PIC 9(n),它将是长度为 n 的数字字符串。

假设您的样本数据以:AA201805 ...

RRC-H10-SEGMENT-ID is 'AA' because it's PIC X(2)
MN-H10-CENTURY is '20' because it's PIC 9(2)
MN-H10-YEAR is '18' because it's PIC 9(2)
MN-H10-MONTH is '05' because it's PIC 9(2)

您将这样做,直到您到达布局的末尾,然后从头开始重新开始您的下一条记录。这也是一个假设,即布局定义与记录的长度相匹配。

最好的办法是与您的 IMS 数据库管理员一起确认这些假设,但是一旦您了解了起点,您应该能够自己映射数据或编写一个快速程序来为您完成。还有一些其他的选择,但是假设一些后端设置,比如 SQL 支持读取数据并将其转储为 Excel 的 csv 文件格式。

于 2018-05-25T00:12:05.337 回答