質問

フラット ファイルの形式を記述するために使用できる標準形式またはオープン形式はありますか。私の会社では、さまざまな顧客ファイル形式を統合しています。XML ファイルを使用すると、XML ファイル形式を記述する XSD を簡単に取得または作成できます。フラットファイル形式(固定幅、区切り文字など)を説明するのに似たものを探しています。Stylus Studio はこれを行うために独自の .conv 形式を使用します。この .conv 形式は、実行時に任意のフラット ファイルを XML ファイルに変換するために使用できます。同じことを行うための、もっとオープンな、または標準ベースの方法があるのではないかと考えていました。

固定幅か区切り形式かにかかわらず、さまざまなフラット ファイル形式を記述する 1 つの方法を探しているので、CSV はこの質問に対する答えではありません。

役に立ちましたか?

解決

XFlat: http://www.infoloom.com/gcaconfs/WEB/philadelphia99/ lyons.HTM#N29する http://www.unidex.com/overview.htmする

複雑なケースについては、

(例えば、ログファイル)を使用すると、字句パーサを考慮することができる。

他のヒント

について 既存の選択 フラット ファイル形式: そこには カンマ区切りの値 (CSV)形式。または、より一般的には、 DSV. 。ただし、個々のセルを区切る区切り文字 (カンマなど) があるため、これらは「固定幅」ではありません。CSV は 標準化された, 、誰もが基準を遵守しているわけではありません。また、CSV は豊富なドキュメント構造を許可しないため、目的に対して単純すぎる可能性があります。

その点で、標準化され、少しだけ複雑になった (しかし、より便利な) フォーマットは、 JSON そして YAML より良い選択です。どちらも、すぐに使える多くの言語でサポートされています。

最善の策は、非バイナリとしてリストされているすべての言語を確認することです。 この概要 そしてどれが自分にとって最適かを判断してください。

について 記述 フラット ファイル形式: これは、形式に応じて、非常に簡単な場合もあれば、難しい場合もあります。ほとんどの場合、より簡単な解決策が存在しますが、一般的に機能する 1 つの方法は、ファイル形式を 正式な文法, 、と書きます レクサー/パーサー それのための。でも、それはかなりのことだと認める 重機。

運が良ければ、いくつかの上級者 正規表現 うまくいくかもしれない。ただし、ほとんどの形式はこれには適していません。 自分でレクサー/パーサーを作成する予定がある場合は、私がアドバイスします。 プライ (Python Lex-Yacc)。しかし、他にも多くのソリューションがさまざまな言語で存在しており、その多くは昔ながらのソリューションよりも便利です。 レックスとヤック. 。詳細については、を参照してください。 どのパーサー ジェネレーターをお勧めしますか?


  :はい、それは控えめな表現かもしれません。
  :きちんと説明しても、 メールアドレスの形式 それは簡単なことではありません。

COBOL(もしそれ好きかどうかは)ファイルに固定幅の記録フォーマットを記述するための標準フォーマットを持っています。

他のファイル形式は、しかし、記述がやや簡単です。 CSVファイルには、例えば、文字列のリストだけです。多くの場合、CSVファイルの最初の行は列名である - 。説明です。

テキストファイルのメタデータを策定するためにJSONを使用する例があります。これは、JSONファイル、CSVファイルや固定形式のファイルに適用することができます。

のhttpを見て://www.projectzero.org/sMash/1.1.x/docs/zero.devguide.doc/zero.resource/declaration.htmlする

これは、エンコードのメタデータにJSONを使用してIBMのsMashの(プロジェクト・ゼロ)です。あなたは簡単にフラットファイルにこれを適用することができます。

一日の終わりに、あなたはおそらく、特にストレージのニーズに食料調達することを独自のファイルの標準を定義する必要があります。私がお勧めすることはあなたが受け取るファイル・タイプのすべてのためのあなたの内部の容器として、XML、YAMLやJSONを使用しています。この上に、あなたは、このような(からのインポートおよび固定幅にエクスポートするための)固定幅ファイルの列のサイズなどのメタデータを維持するために、いくつかの余分な検証ロジックを実装する必要があります。また、あなたは内部形式に変換し、各ファイルにメタデータのセットを保存したり、リンクさせることができます。

そこに標準があるかもしれませんが、それは、これらの問題に対する解決策「ワンサイズで全部にフィット」を作成するためにあまりにも難しいです。そこエンティティ関係管理ツールは、(他の人は、Talendの)これらのマッピングを容易に作成させることが出ていますが、あなたはまだファイル形式の定義とルールを維持することに多くの時間を費やす必要があります。

あなたは(長さ制限)XMLスキーマを使用してフォーマットを記述できるように、

は列の幅を強制するためとして、XMLは最善の解決策かもしれません。私は他の誰かが解決策を打ち出していると確信しているものの、YAMLやJSONのために、あなたは、このための独自のロジックを記述する必要があります。

カンマ区切りのテキストファイルは、さらに用を対 XMLを参照してください。参照ます。

フラット ファイル形式を記述する標準形式またはオープン形式があるかどうかはわかりません。しかし、ある業界はこれを実行しました。銀行業界。実際、金融機関は、と呼ばれる専用ネットワークを介して標準化されたメッセージを使用して通信しています。 迅速. 。SWIFT メッセージはもともと位置指定でした (XML 化されたバージョンである SWIFTML より前)。ちょっとわかりにくいので良い提案かどうかはわかりませんが、おそらく以下を参照してください。 SWIFT フォーマットガイド, 、いくつかのアイデアが得られるかもしれません。

そうは言っても、チェックしてください 扁形動物, 、謙虚なフラット ファイル パーサー。私はこれを位置ファイルや CSV ファイルの解析に使用してきましたが、その XML 記述子形式が気に入りました。SWIFTよりも良い提案かもしれません:)

CSVする

  

CSVフィールド/列はカンマで区切らレコード/行は改行で区切られた区切りのデータ形式です。特殊文字(カンマ、改行、または二重引用符)を含むフィールドは、二重引用符で囲む必要があります。行が空の文字列である単一のエントリが含まれている場合しかし、それは二重引用符で囲まれていてもよいです。フィールドの値は、二重引用符文字が含まれている場合、それはその隣に別の二重引用符を置くことによってエスケープされます。 CSVファイル形式は、特定の文字エンコーディング、バイト順、または行終端形式を必要としません。

<時間>

ウィキペディア上のCSVエントリーは私がそれはあるのデータのシリアル化形式の比較を見つけることが許さほとんどあなたが尋ねます。

私の知っているだけで同様のことは、現在、70本のファイル形式を解析することができますHachoir、次のとおりです。

http://bitbucket.org/haypo/hachoir/wiki/Homeする

私それがベースのパーサをプラグインのため、それは本当に、宣言型言語として数えますが、それが動作しているようですし、うまく自分のニーズを満たす可能性がある、拡張可能であるかはわからない。

はさておき、例えばIFF(交換ファイル形式)として興味深い標準、拡張可能なフラットファイル形式が存在する。

として
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top