我有以下COBOL文件:.DAT,.IDX和fd(文件定义)文件。我们正在使用COBOL Net Express from MicroFocus。
现在我首先想从这个Cobol文件定义创建MsSql表。文件定义内容如下:
FD PREGLA数据记录是FPG-REC 01 FPG-REC。是否可以将此文件导入Microsoft SQL Server 2008?我们也使用Sql server Managment studio。现在我尝试了SQL服务器导入和导出向导,但它没有导入这种文件。
我也看过NET Express,但没有任何运气。甚至可以从COBOL fd获得SQL表定义吗?
答案 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-DECIMAL
或COMP-3
。这些领域
可以转换为SQL DECIMAL
数据类型。
SimoTime为几个提供了非常好的概述 COBOL字段定义。将转换转换为适当的SQL数据类型 应该不难。
注1:从问题中提供的COBOL记录布局片段中,我可以看到OCCURS
子句。
因此,结果表不会
甚至是第一范式。
这些表在数据库环境中管理起来真的很痛苦。
注2:可以在.DAT
文件中找到可用数据。记录布局将对应于COBOL记录定义。 .IDX
文件包含MicroFocus在读/写时使用的索引数据。你可以忽略这些。