【问题标题】:Creating MsSql table from Cobol fd file从 Cobol fd 文件创建 MsSql 表
【发布时间】:2011-10-19 19:13:45
【问题描述】:

我有以下 COBOL 文件:.DAT、.IDX 和 fd(文件定义)文件。我们正在使用COBOL Net Express from MicroFocus

  1. 现在首先我想从这个 Cobol 文件定义创建 MsSql 表。文件定义里面有这个:

    FD PREGLA 数据记录是 FPG-REC。
    01 FPG-REC.
    02 FPG-STA PIC X(01).
    02 FPG-KEY.
    03 FPG-FRM PIC X(02).
    03 FPG-ODD PIC X(02).
    03 FPG-DOK PIC 9(08) 二进制。
    02 FPG-POZ PIC 9(06) 二进制。
    02 FPG-PRM.
    03 FPG-IND PIC 9(01) 发生 10 次。
    ......等等

是否可以将此文件导入 Microsoft SQL Server 2008?我们也在使用 Sql server Management studio。现在我尝试了 SQL Server 导入和导出向导,但它没有这种文件的导入。

我也看过 NET Express,但没有任何运气。甚至可以从 COBOL fd 获取 SQL 表定义吗?

【问题讨论】:

    标签: sql-server-2008 import cobol microfocus


    【解决方案1】:

    并非总是从 COBOL 记录布局创建 SQL 表定义 一个直截了当的过程(尽管走另一条路很简单)。

    问题在于 COBOL 记录布局可能非常复杂,其中包含各种 覆盖(COBOL REDEFINES)和非规范化(COBOL OCCURS)。这些差不多 挫败了大多数将复杂 COBOL 记录映射到自动化过程的尝试 SQL 表布局。

    数据类型映射也可能有点挑战。 Net Express 文件可能 创建以针对基于 ASCII 或 EBCDIC (IBM Mainframe) 的环境。如果你的文件 以 EBCDIC 编码,您很可能必须编写自定义转换软件 因为 您的文件包含混合的字符/数字数据(可能有第三方产品可以自动化或部分自动化这种类型的转换,但我不熟悉它们)。

    尝试使用简单的文本编辑器(例如记事本)查看.DAT 文件之一。如果 你可以读取字符数据,然后它是基于 ASCII 的 - 你有一个战斗的机会 无需太多额外的转换工作即可加载数据。

    PIC X 的 COBOL 字段定义包含字符数据和 直接翻译成 SQL CHAR 类似长度的数据(即PIC X(4) 变成CHAR(4))。

    定义为BINARY 的COBOL 字段定义转换为SQL INTEGER。是否为整数 是长还是短取决于位数。例如PIC S9(8) BINARY 指定 一个有符号的 8 位二进制整数 - 占用 4 个字节。另一方面, PIC S9(4) BINARY 只有 4 位数字,所以会占用 2 个字节(短整数)。

    另一个常见的 COBOL 字段定义是 PACKED-DECIMALCOMP-3。这些字段 可以转换为 SQL DECIMAL 数据类型。

    SimoTime 很好地概述了几个 COBOL 字段定义。计算出转换为适当的 SQL 数据类型 应该不难。

    注意 1:从您问题中提供的 COBOL 记录布局片段中,我可以看到一个 OCCURS 子句。 因此,结果表不会 甚至处于第一范式。 在数据库环境中管理这些表可能真的很痛苦。

    注意 2: 可用数据将在 .DAT 文件中找到。记录布局将对应于 COBOL 记录定义。 .IDX 文件包含 MicroFocus 在读/写时使用的索引数据。你可以忽略这些。

    【讨论】:

    • 感谢您的回答。我在操作中犯了一个错误,我问是否可以从 COBOL fd 获取 SQL 表定义,然后我已经知道了。我没有提到的更大的问题是,我们有大约 100 个这些文件要转换为 MsSql rdb。我发现所有用于这种自动转换的工具都只出售,不存在免费软件。但是再次感谢您提供了几个 COBOL 字段定义概述的链接,如果我们必须手头进行,这些将是一个很好的参考。
    • 继续:您还说过,如果不是第一范式,则可能很难管理。这些用于从 COBOL 到 MsSql rdb 的自动转换的商业工具是否要求它是 1、2、3 或 4 范式?
    • @Jernej 大多数 RDBMS 都可以创建、查询和更新非规范化表。规范化不是 DBMS 的实际要求。规范化不佳的数据库将导致您的应用程序长期受挫。查看this SO question 的一些答案,了解为什么标准化是一个好主意。通过文件系统管理的数据到 RDBMS 的转换通常需要进行大量分析,并且不容易通过“现成的”转换工具实现自动化。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-25
    • 1970-01-01
    • 2023-03-11
    • 2017-07-26
    • 2015-05-10
    • 1970-01-01
    • 2015-05-11
    相关资源
    最近更新 更多