1

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

  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 表定义吗?

4

1 回答 1

2

从 COBOL 记录布局创建 SQL 表定义并不总是一个直截了当的过程(尽管采用另一种方式非常简单)。

问题是 COBOL 记录布局可能非常复杂,具有各种覆盖 (COBOL REDEFINES) 和非规范化 (COBOL OCCURS)。这些几乎挫败了大多数将复杂 COBOL 记录映射到 SQL 表布局的过程自动化的尝试。

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

.DAT尝试使用简单的文本编辑器(例如记事本)查看其中一个文件。如果您可以读取字符数据,那么它是基于 ASCII 的 - 您有很大的机会加载数据而无需额外的转换工作。

COBOL 字段定义PIC X包含字符数据并直接转换CHAR为类似长度的 SQL 数据(即PIC X(4)变为CHAR(4))。

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

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

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

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

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

于 2011-08-04T16:31:27.980 回答