从Cobol fd文件创建MsSql表

时间:2011-08-04 09:00:40

标签: sql-server-2008 import cobol microfocus

我有以下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次。
    .........等等

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

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

1 个答案:

答案 0 :(得分:2)

从COBOL记录布局创建SQL表定义并非总是如此 一个直接的过程(另一种方式很简单)。

问题是COBOL记录布局可能非常复杂 叠加(COBOL REDEFINES)和非规范化(COBOL OCCURS)。这几乎是 击败大多数尝试自动化将复杂的COBOL记录映射到的过程 SQL表格布局。

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

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

COBOL字段定义PIC X某些内容包含字符数据和 直接转换为类似长度的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在读/写时使用的索引数据。你可以忽略这些。