Warum verwenden wir weiterhin CSV?
Vor kurzem habe ich mich dem Gesundheitsbereich zugewandt. Trotz der hervorragenden Arbeit an Datenübertragungsstandards erfolgt die gesamte Datenübertragung in CSV , sowohl für die Berichterstellung an externe Organisationen als auch für Datenmigrationen bei der Implementierung neuer Systeme.
Leider ist die Verwendung von CSV die Ursache für die endlose Wiederholung der gleichen dummen Fehler mit der gleichen Verschwendung von Entwicklerzeit. (Schlechtes Escape, Nichtbearbeiten von Nullfeldern usw.)
Ich weiß, wir können es besser machen, und alles zwischen JSON und XML (abhängig von der Instanz) wäre in Ordnung. (Die meiste Zeit sind dies Daten, die von einem MS SQL Server 2005 auf einen anderen übertragen werden!)
Ich habe das Gefühl, jedes Mal, wenn ich das sehe, sehe ich buchstäblich zu, wie ein Entwickler eine andere Zeit verschwendet.
Warum winken wir uns also gegenseitig zu? Wann hören wir auf?
quelle
Antworten:
In Ihrem Fall scheint CSV nicht gut zu passen, da es keine genauen Spezifikationen gibt.
Für nicht triviale Daten ist dies nicht die richtige Wahl.
Warum / Wann ist CSV eine gute Wahl? Wahrscheinlich zu viele Beispiele, um sie zu erwähnen, die Vorteile der Einfachheit für flache Daten liegen auf der Hand. Solange die Daten ordnungsgemäß bereinigt / ausgeblendet werden, gibt es keine Probleme. Im Allgemeinen wären all diese Fälle jedoch einfach / trivial. Natürlich ist das im Inhalt enthaltene Standardtrennzeichen beim Umgang mit CSV oft ein Manko.
Wenn Sie jedoch einen größeren Aufwand betreiben, als einen nicht-technischen Client zum Senden von Daten aus einer Excel-Tabelle oder einem anderen ähnlichen Anwendungsfall zu veranlassen, ist CSV wahrscheinlich für eine ernsthafte Verwendung unzureichend.
XML ist weitaus besser geeignet (ja noch besser als JSON), da Sie detaillierte standardisierte Schemaspezifikationen dafür vornehmen können. (Ganz zu schweigen davon, dass Spezifikationen / Schemata die Flexibilität mehrerer Implementierungsstile, XSD, DTD und Relax NG, genießen.)
Für geschlossene Regelkreissysteme, insbesondere wenn es um Bandbreite geht, ist JSON möglicherweise besser geeignet als XML, aber das Fehlen von Schemaspezifikationssprachen schließt es häufig von Anwendungen auf Unternehmensebene aus.
quelle
write('"');write(fld1);write('"');
verstehen , indem sie ihre eigenen (in Pseudocode ad nauseum) schreiben. Dann vermissen sie es, Anführungszeichen um etwas zu setzen. Dann schreiben sie ihren eigenen Parser ...Lassen Sie mich ein paar Punkte zugunsten von CSV hervorheben:
quelle
Abwärtskompatibilität. Wenn Ihr Web-Service für externe Organisationen CSV-Daten verarbeitet und alle vorhandenen Tools CSV-Daten verarbeiten, hat keine der Parteien eine Motivation, zu einem neuen Service zu wechseln. Warum sollte Ihre externe Organisation ein anderes Format unterstützen? Niemand, mit dem sie arbeiten, kann es benutzen! Warum würden Sie anfangen, ein anderes Format zu produzieren? Keine der Organisationen, mit denen Sie zusammenarbeiten, akzeptiert dies!
Das eigentliche Problem, das ich hier sehe, ist, warum Ihre Entwickler jedes Mal ihren eigenen CSV-Code rollen? Wenn sie eine stabile, solide CSV-Bibliothek verwenden würden, hätten sie die von Ihnen beschriebenen Probleme nicht. Die Probleme werden durch Entwickler verursacht, die ihre eigene Lösung entwickeln, anstatt eine Bibliothek zu verwenden, und ich sehe ehrlich gesagt nicht, wie der Wechsel zu JSON oder XML dies magisch behebt. Es gibt immer noch Leute, die versuchen, sie zusammenzufassen, anstatt eine Bibliothek zu benutzen.
quelle
CSV ist etwas schneller , kleiner , sehr einfach zu handhaben (auch in Excel) und wird von vielen vorhandenen Anwendungen verstanden. Es ist ein weit verbreiteter Standard .
In vielen Situationen ist es immer noch die erste Wahl.
Ich persönlich mag dieses Format immer noch sehr. Aber ich benutze JSON auch, aber für andere Anwendungen wie Web-UI.
quelle
In erster Linie, denn obwohl das Konsumieren von CSV-Daten (geringfügig) nicht trivial sein kann, ist das Generieren äußerst einfach.
Ich möchte auch darauf hinweisen, dass weder JSON noch XML wirklich einfacher zu finden sind (sowohl für den Produzenten als auch für den Konsumenten). Tatsächlich muss man sich kaum umschauen, um zu wissen, dass viele Leute versuchen, reguläre Ausdrücke zum Parsen von XML-Daten zu verwenden, obwohl es absolut keine Frage ist, dass dies nicht funktionieren kann und wird.
Die meisten Probleme, die bei CSV auftreten können (und auftreten können), treten auch bei JSON und XML auf. Insbesondere XML bringt viele weitere potenzielle Probleme mit sich. Eine Bibliothek zum Parsen von XML-Daten ist im Allgemeinen größer, langsamer und schwieriger zu verwenden als eine ähnliche Bibliothek für CSV-Daten.
quelle
Erstens stimme ich zu, dass es einige sehr reale Probleme mit dem Format gibt:
NULL
und zu unterscheiden. Dies''
ist ein Problem beim Importieren von CSV-Dateien in SQL-Datenbanken.&#xNNNN;
oder JSON\uNNNN
) bedeutet, dass es keine Standardmethode zur Darstellung von Steuerzeichen oder Nicht-ASCII-Zeichen gibt.Andererseits:
quelle
Viele Analysten verwenden Excel (für Pivot-Tabellen usw.), und die Ausgabe von CSV ist viel einfacher als die Ausgabe des nativen Excel-Formats.
Fußnote: Angesichts der vielen Probleme, die ich beim Umgang mit CSV-Dateien in Excel festgestellt habe, wie das Entfernen von führenden Nullen und der Verlust der Genauigkeit, ist dies wahrscheinlich ein falsches Gefühl, einfacher zu sein.
quelle
Wenn etwas mit CSV nicht stimmt, ist es so, dass CSV so einfach erscheint, dass viele Entwickler versuchen, ihre eigenen Parser / Writer zu erfinden, und später CSV dafür verantwortlich machen, dass sie nicht korrekt mit dem Escape-Vorgang umgehen. Mit einem guten CSV-Parser (viele gute Parser gibt es da draußen) wird es überhaupt kein Problem geben.
Jemand, von dem CSV erwähnt wird, ist nicht gut für nicht-triviale Daten, aber ich stimme nicht zu. XML erlaubt nicht-triviale Daten, da unterschiedliche Datensätze in unterschiedliche "Container" -Tags gestellt werden können. Mit CSV können Sie immer verschiedene Daten in verschiedenen Dateien ablegen, um den gleichen Effekt zu erzielen.
Darüber hinaus widerspricht die Verwendung von XML für den Datentransfer meiner Meinung nach grundsätzlich dem Zweck von XML - der Datentransfer impliziert normalerweise einen stabilen Vertrag zwischen Anbietern und Verbrauchern, während XML erweiterbare Informationen enthalten soll, die interpretiert werden müssen, wenn sie konsumiert werden.
quelle
Ich denke, CSV ist einfach gut, wenn Sie nur einfache Textdaten haben, mit nur Kommas und entweder Semikolon / Endzeile am Ende.
Baumarchitekturdaten oder zusammengesetzte Daten können mit CSV kaum verwendet werden.
CSV ist nur eine einfache 2D-Anordnung von Text wie in Excel, nicht viel ...
quelle
Hier dreht sich wirklich alles um Mainframes und Excel.
Mainframes, weil diese alten Systeme herausgefunden haben, wie sie mit CSV kommunizieren können. So können die großen Apps, die die Daten sichern, sie lesen und schreiben und haben keinen Grund, sie jetzt zu ändern.
Excel, weil es CSVs direkt öffnen kann. Tatsächlich übernimmt es die Erweiterung .csv, wenn Sie es installieren. Benutzer klicken einfach auf das leicht lustig aussehende Excel-Symbol und es öffnet sich und ein schönes Gitter, mit dem sie sich herumschlagen können.
Moderne Excel-Versionen können z. B. XML direkt lesen. Aber dazu muss ein Benutzer ein bisschen mehr verstehen als "Doppelklick auf das Bild". Und ein Doppelklick auf das rechte Bild kann in manchen Branchen zu viel verlangen. . .
quelle
Ich habe viele technische Antworten gesehen, aber ich vermute, dass die Leute CSV verwenden, weil sie mit vielen anderen Techniken / Technologien vertraut sind
quelle
warum benutze ich es
usw. usw.
quelle