COBOLレコードレイアウトからSQLテーブル定義を作成することは、常に という単純な処理ではありません(ただし、他の方法はかなり簡単です)。
問題は、様々な オーバーレイ(COBOL REDEFINES)と非正規化(COBOL OCCURS)でCOBOLレコードレイアウトがかなり複雑になる可能性があることです。これらはかなり は、複雑なCOBOLレコードを SQLテーブルレイアウトにマッピングするプロセスを自動化しようとするほとんどの試みを打ち負かしています。
データタイプマッピングは、少し難題かもしれません。 Net Expressファイルは、ASCIIまたはEBCDIC(IBM Mainframe)ベースの環境のいずれかを対象にするために作成することができます。 あなたのファイルが がEBCDICでエンコードされている場合は、あなたのファイルが混在文字/数値データが含まれている ので、あなたが最も可能性の高いカスタム変換ソフトウェア を記述する必要があります(自動、または一部を自動化し、変換のこのタイプの私できるサードパーティ製品があるかもしれません彼らには馴染みがない)。
シンプルなテキストエディタ(メモ帳など)で.DAT
のいずれかのファイルを見てみてください。 文字データを読み取ることができるのであれば、それはASCIIベースであり、多くの追加の変換作業を行うことなくデータをロードするための戦いのチャンスがあります( )。 PIC X
何かある
COBOLのフィールド定義文字データが含まれていると (すなわちPIC X(4)
がCHAR(4)
なり)SQLに直接同様の長さのCHAR
データを変換します。 BINARY
として定義
COBOLフィールドの定義は、SQL INTEGER
に変換されます。整数 が長いか短いかは、桁数によって異なります。たとえば、PIC S9(8) BINARY
は、 を8桁の符号付き2進整数で指定します。これは4バイトを占有します。一方、 PIC S9(4) BINARY
は4桁しかないので、2バイト(短い整数)を占有します。
もう1つの一般的なCOBOLフィールド定義は、PACKED-DECIMAL
またはCOMP-3
です。これらのフィールド は、データタイプDECIMAL
に変換される場合があります。
SimoTimeは、いくつかの COBOLフィールド定義の非常に良い概要を提供します。適切なSQLデータタイプ への変換作業は困難ではありません。
注1:あなたの質問に記載されているCOBOLレコードレイアウトの断片から、私はOCCURS
節を見ることができます。 このため、結果の表は でも第1正規形にはなりません。 これらのテーブルは、データベース環境で管理するのに非常に苦労する可能性があります。
注2:使用可能なデータは.DAT
ファイルにあります。レコードレイアウトは、COBOLレコード定義に対応します。 .IDX
ファイルには、読み取り/書き込み時にMicroFocusが使用するインデックスデータが含まれています。これらは無視することができます。
お返事ありがとうございます。私はCOBOL fdからSQLテーブル定義を得ることが可能かどうか尋ねたところで、私はすでに誤っていました。私が言及していない大きな問題は、約100個のファイルがMsSql rdbに変換されていることです。私は、この種の自動化された変換のために存在するすべてのツールが販売用であり、フリーウェアは存在しないことを発見しました。しかし、いくつかのCOBOLフィールド定義の概要のリンクを提供してくれてありがとう、我々が手にしなければならないなら、これは良い参考になるだろう。 –
続行:また、First Normal形式でない場合は、管理が難しいと言いました。 COBOLからMsSql rdbへの自動変換用のこれらの商用ツールは、1,2,3または4の標準形式である必要がありますか? –
@ Jernej正規化されていないテーブルは、ほとんどのRDBMSで作成、照会、更新できます。正規化は、DBMSの実際の要件*ではありません。正規化されていないデータベースは、アプリケーションの長期的な悲嘆につながります。いくつかの[このSOの質問](http://stackoverflow.com/questions/246701/what-is-normalisation-or-normalization-why-is-it-important)の答えを見て正規化がなぜであるかを見てください良い考え。ファイルシステムを介して管理されるデータのRDBMSへの変換は、一般的に多くの分析を必要とするものであり、「オフザフール」変換ツールでは容易に自動化されません。 – NealB