0

csv に解析する必要がある 40K 行の EDI (固定長) ファイルがあります。edi を知っていれば、各要素には独自の固定長があることがわかります。

私は EDI を解析するのが初めてで、少しだけ助けが必要です。私の最初の考えは、要素の長さを配列またはそのようなものとして保持するテーブルを設定することです

Table EDIInfo
EDI_ID           |  EDI_ElemLengths

1                |  3,22,7s2,30,30,22
2                |  30,5s2,9s2,3,1,23

** 上記の配列の s は、右から 2 番目の小数を表します。

したがって、このデータをデータベースに取得すると、サーバー上にあるファイルに適用するためにそれを引き出す方法がわかりません。この時点では、ファイルは拡張子がなく、単純なテキスト ファイルです。私はそれを直接同じで新しいファイル XXXX.csv に解析したいと思います。

tuts へのリンクやヘルプ/指示をいただければ幸いです。

EDI がわからない場合は、基本的に、「要素」で構成される各行に「レコード」を含むテキスト ファイルです。各「要素」は、割り当てられたスペースをすべて占有しない場合でも、その行に一定数の文字を使用できます。要素はフィールドに似ています (フィールドが varchar 64 などで定義されるように、要素はテキスト ファイルで使用できるスペースの量によって定義されます)。要素が互いに衝突し、要素のスペース割り当ての外側に区切り文字がありません。

ありがとうございました

4

1 に答える 1

0

従来の定義では、EDI 要素は「固定長」ではありません。どこでそのアイデアを得たのかわかりません。あなたの声明:「ediを知っていれば、各要素には独自の固定長があることがわかります。」は偽です。あなたの声明:「基本的に、「要素」で構成される各行に「レコード」があるテキスト ファイルも正しくありません。セグメント ターミネータが CR または LF の場合、テキスト エディタはそれを行ごとのセグメントとしてレンダリングします。セグメント ターミネータがチルダ (~) だった場合、ファイルはテキスト ストリームになります。

EDI ディクショナリによると、要素には最小値/最大値を設定できます。要素に最小 4 / 最大 8 がある場合、完全な 8 文字にパディングされないため、要素は可変長です。EDI は構造化された区切りファイルです。唯一の固定長セグメントは ISA (ANSI X12) です。

ANSI X12 を使用している場合は、セグメント、要素、サブ要素の 3 つの区切り文字があります。それらは、ISA セグメントを解析することで見つけることができます。区切り文字を取得したら、ファイルの残りを解析できます。区切り文字で解析している場合、要素の長さについて心配する必要があるのは、標準辞書に対する構文チェックを行う場合だけです。これは、おそらくやりたくないことです。

EDIFACT を使用している場合、同じ一般的な考え方が適用されます (エンベロープから区切り文字を取得しますが、6 つの区切り文字が存在する可能性があります)。ANSI X12 を使用していると仮定しているだけです。

そこにはたくさんのパーサーがあります。あなたは車輪を再発明しています。既存のパーサーには、おそらく FA 生成と通信ツールが組み込まれています。生の EDI データを大量に見ていて、データが何を意味するかについてコンテキストが必要な場合は、この無料の EDI メモ帳ツールを見てください: http://liaison. com/products/integrate/edi-notepad

于 2012-11-13T17:00:08.617 に答える