なぜCSVを使用し続けるのですか?[閉まっている]


13

なぜCSVを使用し続けるのですか?

私は最近、健康分野の仕事にシフトしました。データ転送標準のすばらしい仕事にもかかわらず、すべてのデータ転送は、外部組織への報告と新しいシステムの実装時のデータ移行の両方でCSVで行われます。

残念ながら、CSVの使用は、開発者の時間を無駄に消費する同じ愚かなエラーの無限の繰り返しの原因です。(エスケープが悪い、nullフィールドを処理できないなど)

私たちはもっと良くできることを知っていますし、JSONとXMLの間(インスタンスによって異なります)は何でも構いません。(ほとんどの場合、これは1つのMS SQLserver 2005から別のMS SQLserver 2005へのデータです!)

これが起こるのを見るたびに、ある開発者が別の開発者の時間を無駄にするのを文字通り見ているように感じます。

それでは、なぜ互いに軸を合わせ続けるのでしょうか?いつ停止しますか?


20
ヘルスドメインに入ったばかりで、CSVが悪いと思う場合は... HL7に遭遇するまで待ってください!
G__

3
@グレッグLOL、彼を怖がらせないでください、驚きは常に最高です:)
ジェームズラブ

47
-1これは、CSVが原因ではない問題に対する反CSVの暴言です。ライブラリなしでXMLを読み書きするとどうなると思いますか?あなたの問題は100倍悪化するでしょう。
ジェシーミリカン

12
「それでは、なぜ互いに軸を合わせ続けるのでしょうか?いつ停止するのですか?」私が仕事をしているところ、だれもシャフトを使わずにCSVをうまく使用することができます(実際、XMLの段階なので、はるかにイライラします)。たぶんあなたとあなたの同僚は何か間違ったことをしているのでしょうか?
FrustratedWithFormsDesigner

3
これまでの議論はすべて、CSVの非常に現実的な問題を見逃しています。区切り文字はデータに表示される可能性が高く、CSVはその問題に対して最適ではないアプローチを取ります(データを引用符で囲むと問題が下流に押し出されます) 。より良い方法は、パイプ区切りファイルを使用することです。
ラリーコールマン

回答:


10

あなたの場合、CSVは厳密な仕様がないため、適切ではないようです。

重要なデータの場合、これは正しい選択ではありません。

なぜ/いつCSVが良い選択ですか?言及するにはインスタンスが多すぎると思われますが、フラットデータのシンプルさの利点は明らかです。データが適切にサニタイズ/エスケープされる限り、問題はありません。しかし一般的に言えば、これらのケースはすべて単純/些細なものです。もちろん、CSVを扱う場合、コンテンツに表示される標準の区切り文字はしばしば苦痛です。

ただし、非技術的なクライアントにExcelシートまたはその他の同様のユースケースからデータを送信させるよりも複雑なことをしている場合、CSVは深刻な用途にはおそらく不十分です。

XMLは、詳細な標準化されたスキーマ仕様を作成できるため、はるかに適しています(JSONよりもはるかに優れています)。(言うまでもなく、仕様/スキーマは複数の実装スタイル、XSD、DTD、Relax NGの柔軟性を享受しています)

特に帯域幅が懸念されるクローズドループシステムの場合、JSONはXMLよりも適していますが、スキーマ仕様言語が不足しているため、エンタープライズレベルのアプリケーションから除外されることがよくあります。


3
実際、「データが適切にサニタイズ/エスケープされる限り」。しかし、多くのプログラマーにとって、この方法は間違っている可能性があり、独自の(擬似コードwrite('"');write(fld1);write('"');広告の吐き気で)書いているようです。その後、独自のパーサーを作成します
。...-ジェリー

3
うん、ロール・ユア・オウンの乗組員は本当にこのインターネットのものを使い始めなければならないかもしれません、多分...という言葉の意味さえ学んでください。
オコド

情報共有!再利用可能なコード!馬鹿げた新しいアイデア。他の人々の過ちを繰り返すことは、私の偉大な^ 50祖父にとって十分であり、それは私にとって十分です!
Steve314

@ Steve314-/ me "ホラーとアミューズメントの両方の顔を作ります。"
オコド

ただし、CSVには厳密仕様があります。現在の問題は通常の問題です。Excelは100%に準拠していません。
gbjbaanb

63

CSVを支持していくつかの点を挙げましょう。

  • CSVはシンプルで(OPで提案されている他の選択肢よりも)実装および解析が簡単です
  • CSVは、地球上のほぼすべてのソフトウェアで認識されます(過去と現在)
  • CSVは、かなりフラットでシンプルなスキーマを強制します(フィールドの単一のフラットリストがあります)
  • CSVはXML、JSON、または(UGH!)HL7(V2.x、pre-xml)よりも人間が読みやすい

14
「悪魔の擁護者」を演じる必要はありません...あなたがするすべてのポイントは完全に有効であり、CSVがまだ使用されている理由を説明しています。単純に単純です。
グランドマスター

7
@Stephen:CSVのさまざまなバリエーションを知っていますか?
FrustratedWithFormsDesigner

3
@FrustratedWithFormsDesignerエスケープ規則はいくつ考えられますか?
スティーブン

3
@Pierre 303私はそれがばか証拠だったことを望みます。それが開発者の証拠だったら嬉しいです。
スティーブン

8
@ Pierre303、ばか証明...もしあなたが何かを「ばかにした」と思ったら、十分なばかでそれをテストしていません。
オコド

29

下位互換性。外部組織のWebサービスがCSVを処理し、既存のすべてのツールがCSVを処理する場合、どちらの当事者も新しいサービスに移行する意欲はありません。外部組織が別の形式のサポートを開始するのはなぜですか?彼らが働いている誰もそれを使用することはできません!なぜ別のフォーマットの制作を開始するのですか?協力している組織はどれも受け入れません!

本当の私はここを参照してください問題は、ある理由は、あなたの開発者が独自のCSVコードを毎回展開してい?安定した堅実なCSVライブラリを使用している場合、説明した問題は発生しません。この問題は、開発者がライブラリを使用する代わりに独自のソリューションを展開することにより発生します。正直、JSONまたはXMLへの移行がそれを魔法のように修正する方法はわかりません。ライブラリを使用する代わりに、それらを正規表現しようとしている人がまだいるでしょう。


4
毎回自分でローリングする場合は+1。欠陥のあるデータ形式ではなく、学ばない開発者がいます。:
G__

「後方互換性」-あなたは当然です-しかし、前進しないことは何千もの費用がかかります。
スティーブン

独自のCSVライブラリをロールバックしても問題ありません... 再利用してください!
GrandmasterB

5
@Stephen:いいえ、必要なたびにCSVを再実装すると、数千のコストがかかります。形式としてのCSVは問題ありませんが、正しく作成できない開発者が問題です。
アノン。

6
@Stephen:それで、CSVの問題は単純すぎて、もっと複雑なものが欲しいということですか?
アノン。

15

CSVは少し速くサイズが小さく、非常に扱いやすく(Excelでも)、多くの既存のアプリケーションがそれを理解しており、広く使用されている標準です。

多くの場合、これが最初の選択肢です。

私は個人的にまだそのフォーマットがとても好きです。しかし、私もJSONを使用していますが、Web UIなどの他のアプリケーションにも使用しています。


1
「ビット」の最初の使用を除いて、これのすべてのビットに同意します。
11

3
先行ゼロを保持する必要があるデータがある場合は、Excelで絶対に低レベルになる可能性があります。...それ以外に、Excelは優れたインターフェイスを提供します。
ダル

@Dal:私はかつて信用組合で働いていましたが、クレジットカード番号を含むCSVファイルを処理する必要がありました。16桁です。Excelは15に丸められました。
dan0411

または、さらに悪いことに、それらを科学表記法に変換しました。:(リモートアカウント番号が無効であるというACH処理で最初にエラーが返されたとき、誰かがExcelでcsvを編集した(行を削除するだけで)ことを確認し、30の束を変更したことを覚えています口座番号を2.3456356e29などに変更
cabbey

1
@Jeanne:CSVにJSONのように実際に数字/文字列の区別がある場合、Excelに値のタイプを伝えるのは非常に簡単です。これらの問題は、CSVが文字列で入力されていることが原因です。
dan04

15

何よりも重要なのは、CSVデータを消費することは(わずかに)自明ではない場合でも、その生成は非常に簡単だからです。

また、JSONとXMLのどちらも(プロデューサーまたはコンシューマーのどちらにとっても)本当に簡単に正しく取得できないことを指摘します。実際、多くの人が正規表現を使用してXMLデータを解析しようとしていることを知るために、ほとんど見回す必要はありません。

CSVで発生する可能性がある(および実際に発生する)問題のほとんどは、JSONとXMLの両方で発生する可能性があります(実際に発生します)。特にXMLは、それ自体の潜在的な問題をさらに多く追加します。通常、XMLデータを解析するライブラリは、CSVデータ用の同様のライブラリよりも大きく、遅く、使いにくいです。


1
正しく生成されているように見えることは非常に簡単であり、仕様に欠けるデータを消費することは、重要なデータがある場合に重要です。
スティーブン

2
@Stephen:私がやったことに注目すべきではないという最初の文の「正しく」が含まれます。その省略は意図的なものでした!
ジェリーコフィン

4

まず、この形式には非常に現実的な問題があることに同意します。

  • 文字列型です。
    • テキストと数値の区別がないため、Excelは間違った推測をし、郵便番号とクレジットカード番号を台無しにします。
    • バイナリデータを表す標準的な方法はありません。
    • NULLとを区別する標準的な方法はありません''。これは、CSVファイルをSQLデータベースにインポートする際の問題です。
  • 「特殊文字」の不十分なサポート。
    • (XML &#xNNNN;やJSON \uNNNN)のような数字参照の欠如は、制御文字または非ASCII文字を表す標準的な方法がないことを意味します。
    • 多くの実装では、フィールド内で改行を適切に実装していません。
  • 標準の欠如。RFC 4180がありますが、一般的には従いません。

しかし、一方で:

  • 選択肢はさらに悪い。ツリーを中心に設計されているJSONとXMLは、特に次の点で、テーブルベースのデータにはあまり適していません...
  • コンパクト! XMLでは、あなたはの開始タグと終了タグ持っている必要があり、各の各列に。CSVでは、列ヘッダーを1回だけ記述します。
  • CSVは非常に簡単に生成できます。
  • プログラマ以外は、ExcelでCSVファイルを開くことができます。

逆に; このデータをExcelで使用すると、悪意のある攻撃になります。CSVは簡単に生成できず、コンパクトさは問題ではありません。ツリーはこのデータにより適しています。
スティーブン

4

多くのアナリストがExcel(ピボットテーブルなど)を使用しているため、CSVを出力する方がネイティブのExcel形式を出力するよりもはるかに簡単だからです。

脚注:先行ゼロの削除や精度の低下など、ExcelでCSVファイルを処理する際に見た問題の数を考えると、これはおそらく簡単だという誤った感覚です。


この+1000。Excelは、データの迅速で汚れた分析のためのキラーアプリケーションです(一度知ったら)。Excelにエクスポートできることは、ビジネスや研究などの開発者以外の人にも強力な力を与えます。Excelは世界を運営しています。CSVエクスポートはExcelを実行します。
ヨハネス

2

CSVに問題がある場合、CSVが非常に単純であるため、多くの開発者が独自のパーサー/ライターを発明しようと試み、後で​​エスケープを正しく処理しないためにCSVを非難します。優れたCSVパーサー(多くの優れたパーサー)があれば、まったく問題はありません。

CSVが重要なデータには向いていないと言った人もいますが、私は同意しません。XMLでは、異なるデータセットを異なる「コンテナ」タグに入れることができるため、重要なデータが許可されます。CSVを使用すると、異なるファイルに異なるデータを常に入れて、同じ効果を得ることができます。

さらに、私の意見では、データ転送にXMLを使用することは基本的にXMLの目的に反します。データ転送は通常、プロバイダーとコンシューマー間の安定した契約を意味し、XMLは消費時に解釈可能な拡張可能な情報を運ぶことを意味します。


1

CSVは、カンマと最後にセミコロン/エンドラインのみの単純なテキストデータしかない場合に適していると思います。

ツリーアーキテクチャデータまたは合成データは、CSVではほとんど使用できません。

CSVは、Excelのように単純なテキストの2D配列にすぎません。


1

それは本当にメインフレームに関するすべてであり、ここで優れています。

これらの古いシステムはCSVを使用して通信する方法を見つけたため、メインフレーム。そのため、データをダンプする大規模なアプリは、データの読み取りと書き込みを行うことができ、現在変更する理由はありません。

Excel。CSVを直接開くことができるため。実際、インストール時に.csv拡張子を引き継ぎます。ユーザーは、ちょっと変わった見栄えの良いExcelアイコンをクリックするだけで、開くことができ、うまい具合のグリッドを作成できます。

現在、Excelの最新バージョンは、XMLなどを直接読み取ることができます。しかし、そうするためには、ユーザーはもう少し「その写真をダブルクリックする」ことを理解する必要があります。また、一部の業界では、右の写真をダブルクリックするのは多すぎます。。。


-1

私は多くの技術的な答えを見てきましたが、人々がCSVを使用する理由は、人々が他の多くの技術/技術を使用するのと同じ理由だと思います:それは彼らが最もよく知っているものだからです


-1

なぜそれを使用するのですか?

  1. 顧客はそれを望んでいます
  2. ネットワーク上のxmlより高速です(ネットワーク負荷が小さい)
  3. データを取得するためにこれ以上複雑なことは必要ありません
  4. クロスプラットフォーム
  5. 人間が読める
  6. リーダーとライターを簡単に実装できます

などなど

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.