Чому ми продовжуємо використовувати CSV? [зачинено]


14

Чому ми продовжуємо використовувати CSV?

Нещодавно я перейшов до роботи в галузі охорони здоров’я, і, незважаючи на чудову роботу в галузі стандартів передачі даних, вся передача даних відбувається в CSV , як для звітування перед зовнішніми організаціями, так і для міграції даних при впровадженні нових систем.

На жаль, використання CSV є причиною нескінченного повторення одних і тих же дурних помилок з однаковою витратою часу розробника. (поганий втечу, невміння обробляти нульові поля тощо)

Я знаю, що ми можемо зробити краще, і все, що між JSON та XML (залежно від примірника) було б добре. (Найчастіше це дані, що переходять від одного MS SQLserver 2005 до іншого!)

Я відчуваю себе так, ніби кожен раз, коли я бачу це, я буквально спостерігаю, як один розробник витрачає інший час.

То чому ми продовжуємо валити один одного? Коли ми зупинимось?


20
Якщо ви просто потрапляєте у сферу охорони здоров’я і вважаєте, що CSV поганий ... просто зачекайте, поки ви не наткнетесь на HL7!
G__

3
@Greg LOL, не лякай його, сюрприз завжди найкращий :)
James Love

47
-1 Це анти-CSV скандал проти проблем, які не викликали CSV. Що саме, на вашу думку, станеться, якщо ви читали та писали XML без бібліотеки? Ваші проблеми були б у сто разів гіршими.
Джессі Мілікан

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('"');ad nauseum.) Тоді вони пропускають ставити цитати щось. Тоді вони пишуть власний парсер ....
Геррі

3
Так, власний екіпаж дійсно повинен почати використовувати цю Інтернет- річ, можливо, навіть вивчити значення цього слова ... Бібліотека.
окудо

обмін інформацією! повторно використаний код! дурні новомодні ідеї. Повторення помилок інших народів було досить добре для мого великого ^ 50 діда, і це досить добре для мене!
Steve314

@ Steve314 - / me "робить обличчя і жаху, і розваги".
ocodo

Але CSV має жорстку характеристику . Наша проблема зараз є звичайною - Excel їй не відповідає 100%.
gbjbaanb

63

Дозвольте викинути кілька пунктів на користь CSV:

  • CSV простий (r, ніж будь-яка альтернатива, запропонована в ОП) для реалізації та розбору
  • CSV розуміється майже у кожному програмному забезпеченні планети (минулому та теперішньому)
  • CSV створює досить рівну просту схему (є єдиний плоский список полів)
  • CSV читає людину, ніж XML, JSON або (UGH!) HL7 (V2.x, pre-xml)

14
Вам не доведеться грати у "захисника чортів" ... всі ті пункти, які ви робите, цілком справедливі і пояснюють, чому CSV все ще використовується. Це просто простіше.
ГрандмайстерB

7
@Stephen: Скільки різних варіантів CSV ви знаєте?
FrustratedWithFormsDesigner

3
@FrustratedWithFormsDesigner, про скільки уникаючих конвенцій ви можете придумати?
Стівен

3
@Pierre 303 Я б хотів, щоб це було ідіотським доказом. Буду радий, якби це було підтвердженням розробника.
Стівен

8
@ Pierre303, ідіотське підтвердження ... Якщо ти вважаєш, що ти щось ідотував, - ти не перевірив це достатньо ідіотів.
ocodo

29

Зворотна сумісність. Якщо ваша зовнішня веб-служба orgs обробляє CSV, а всі існуючі інструменти обробляють CSV, жодна сторона не має жодної мотивації переходити до нової послуги. Чому ваш зовнішній орган почав підтримувати інший формат? Ніхто, з ким вони працюють, не може ним користуватися! Чому б ви почали виробляти інший формат? Жодна з організацій, з якими ви працюєте, не приймає це!

Реальна проблема , яку я бачу тут, чому ваші розробники коченню свій власний код CSV кожен раз? Якби вони використовували стабільну, надійну бібліотеку CSV, у них не було б проблем, які ви описуєте. Проблеми викликані розробниками, які замість використання бібліотеки прокатують власне рішення, і я, чесно кажучи, не бачу, як магічне переміщення до JSON або XML це виправляє. У вас все ще будуть люди, які намагаються їх повторно налаштувати замість бібліотеки.


4
+1 для прокатки кожного разу. Я бачу розробників, які не вчаться, не хибний формат даних. :-)
G__

"зворотна сумісність" - ви, звичайно, праві - але не рухатися вперед коштує тисячі.
Стівен

Чудово розкачати власну бібліотеку CSV ... просто повторно використовуйте її!
GrandmasterB

5
@Stephen: Ні, повторне впровадження CSV кожного разу, коли вам це потрібно, коштує тисячі. CSV як формат є нормальним, проблема - у розробниках, які не можуть його виправити.
Анон.

6
@Stephen: Отже, ваша проблема з CSV полягає в тому, що це занадто просто і вам потрібно щось складніше?
Анон.

15

CSV трохи швидший , меншого розміру , дуже простий в обробці (навіть в Excel), і багато існуючих додатків розуміють це, це широко використовуваний стандарт .

Це все ще перший вибір у багатьох ситуаціях.

Мені особисто все ще дуже подобається такий формат. Але я використовую і JSON, але для інших додатків, таких як веб-інтерфейс.


1
Я погоджуюся з кожним шматочком цього, за винятком початкового використання "трохи".
Орлінг

3
Це може бути абсолютна база *** з Excel, якщо у вас є дані, які потребують збереження нульових нулів .... запитайте мене, як я знаю! ... крім цього Excel забезпечує хороший інтерфейс.
Даль

@Dal: Раніше я працював у кредитній спілці, і мені довелося мати справу з файлами CSV, які містили номери кредитних карток. У яких 16 цифр. Це Excel округляється до 15
dan04

Або гірше, що це перетворило їх на наукові позначення. :( Я пам’ятаю, коли вперше в нашій обробці ACH з'явилася помилка про те, що номер віддаленого облікового запису недійсний, лише щоб дізнатися, що хтось відредагував csv у excel (лише для видалення рядка), і він змінив купу 30 розраховуйте номери рахунків на 2.3456356e29 тощо
каббе

1
@Jeanne: Якщо CSV насправді відрізняв число / рядок, як JSON, було б досить просто сказати Excel, який тип значень. Ці проблеми пов'язані з тим, що CSV набирається строго.
дан04,

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 ви пишете заголовки стовпців лише один раз.
  • CSV дуже легко генерувати.
  • Непрограмісти можуть відкривати файли CSV в Excel.

у зворотному напрямку; використання цих даних у excel було б кримінальним правопорушенням, CSV легко створити погано, компактність - це не проблема, дерева краще підходять для цих даних.
Стівен

4

Оскільки багато аналітиків використовують Excel (для зведених таблиць тощо), і вивести CSV набагато простіше, ніж виводити власний формат Excel.

Виноска: враховуючи, скільки проблем у Excel було пов’язано з обробкою файлів CSV, як-от видалення перших нулів та втрата точності, це, мабуть, помилкове відчуття простішого.


Це +1000. Excel - це вбивчий додаток (як тільки ви це знаєте) для швидкого та брудного аналізу даних. Можливість експорту в Excel дає величезні повноваження не розробникам у бізнесі, дослідженнях тощо. Excel керує світом. Експорт CSV запускається Excel.
johannes

2

Якщо з CSV щось не так, це те, що CSV видається настільки простим, що багато розробників намагаються винайти власні парсери / автори, а пізніше звинувачують CSV у неправильному виконанні операцій із втечею. З хорошим аналізатором CSV (багато хорошого там) взагалі не буде проблем.

Один згаданий CSV не підходить для нетривіальних даних, але я не згоден. XML дозволяє нетривіальні дані, оскільки різні набори даних можуть бути поміщені в різні "контейнерні" теги. За допомогою CSV ви завжди можете розміщувати різні дані у різних файлах, щоб досягти однакового ефекту.

Крім того, на мою думку, використання XML для передачі даних принципово суперечить меті XML - передача даних зазвичай передбачає стабільний контракт між постачальниками та споживачами, тоді як XML має на меті нести розширювану інформацію, що підлягає інтерпретації під час її споживання.


1

Я думаю, що CSV просто хороший, коли у вас є лише прості текстові дані, у яких лише коми, або крапка з комою / кінцею в кінці.

Дерево архітектурні дані або складені дані навряд чи можна використовувати з CSV.

CSV - це просто звичайний 2D-масив тексту, як у excel, нічого особливого ...


1

Тут дійсно все стосується мейнфреймів та видатних результатів.

Мейнфрейми, тому що ті старі системи з'ясували, як спілкуватися за допомогою CSV. Тож великі програми, які скидають дані, можуть читати та записувати їх і тепер не мають жодних причин змінювати.

Excel, оскільки він може відкривати CSV безпосередньо. Фактично, він приймає розширення .csv при його встановленні. Користувачі просто натискають на трохи кумедний на вигляд Excel значок, і він відкривається, і створює приємну сітку, з якою вони можуть скластись.

Тепер сучасні версії excel цілком здатні читати, скажімо, XML безпосередньо. Але для цього користувач повинен трохи більше зрозуміти, що "двічі клацніть на цій картинці". І подвійне клацання праворуч може бути занадто багато, щоб запитати в деяких галузях. . .


-1

Я бачив багато технічних відповідей, але підозрюю, що люди використовують CSV - це та сама причина, чому люди використовують багато інших методик / технологій: тому що це той, з ким вони найбільш знайомі


-1

чому я його використовую?

  1. замовник цього хоче
  2. це швидше, ніж xml по мережі (менша завантаженість мережі)
  3. нічого більш складного для отримання даних не потрібно
  4. поперечна платформа
  5. людський читабельний
  6. прості у виконанні читачі та письменники для цього

тощо.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.