2011-08-04 59 views
1

我有以下COBOL文件:.DAT,.IDX和fd(文件定義)文件。我們正在使用COBOL Net Express from MicroFocus從Cobol fd文件創建MsSql表

  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)BINARY。
    02 FPG-POZ PIC 9(06)BINARY。
    02 FPG-PRM。
    03 FPG-IND PIC 9(01)發生10次。
    .........等等

是否有可能將此文件導入的Microsoft SQL Server 2008?我們也使用Sql server Managment studio。現在我嘗試了SQL服務器導入和導出嚮導,但它沒有爲這種文件導入。

我也看過NET Express,但沒有任何運氣。是否有可能從COBOL fd獲取SQL表定義?

回答

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在讀/寫時使用的索引數據。你可以忽略這些。

+0

謝謝你的answear。我在op中犯了一個錯誤,我問是否可以從COBOL fd中獲得SQL表定義,然後我已經知道了。我沒有提到的更大的問題是,我們大約有100個文件要轉換爲MsSql rdb。我已經發現,這種自動轉換的所有工具僅用於銷售,不存在免費軟件。但是再次感謝您提供一個鏈接來概述幾個COBOL字段定義,如果我們需要手動完成,這些將是一個很好的參考。 –

+0

繼續:你也說過,如果它不是第一範式,它可能很難管理。做這些從COBOL到MsSql rdb的自動轉換的商業工具需要它在1,2,3或4範式中嗎? –

+0

@Jnenej非標準化的表格可以由大多數RDBMS創建,查詢和更新。規範化不是DBMS的實際*要求*。數據庫規範化程度不高會導致您的應用程序長期悲痛。看看[這個SO問題]的一些答案(http://stackoverflow.com/questions/246701/what-is-normalisation-or-normalization-why-is-it-it-important),看看爲什麼規範化是一個好主意。將通過文件系統管理的數據轉換爲RDBMS通常需要進行大量分析,並且不易通過「現成」轉換工具實現自動化。 – NealB