ไม่มีอะไรผิดปกติกับ CSV จนถึงจุดหนึ่ง
CSV ทำงานได้ดีสำหรับข้อมูลที่กำหนดอย่างเหนียวแน่นซึ่งไม่น่าจะเปลี่ยนรูปแบบและไม่ได้สร้างความประหลาดใจให้กับตัวแยกวิเคราะห์ผู้รับ
นี่คือรายการ gotchas ขนาดใหญ่ที่มีประโยชน์:
- หนีออกจาก "" ภายใน "" (ฟิลด์มีตัวคั่นฟิลด์)
- "" มี CRLFs (ฟิลด์มีตัวคั่นบรรทัด)
- Unicode (รูปแบบข้อความพื้นฐานอาจไม่เพียงพอ)
- ตัวต่อสายที่แตกต่างกันสำหรับ OS ต่าง ๆ (คือ CR หรือ CRLF หรือ LF หรือ NUL)
- ความคิดเห็นแบบอินไลน์ (บรรทัดนำหน้าด้วย #, //, -,; ฯลฯ )
- การจัดการเวอร์ชั่น (ไฟล์เวอร์ชั่นล่าสุดมีฟิลด์มากหรือน้อย)
- ความแตกต่างระหว่าง NULL และข้อมูลว่างเปล่า (, "", ว่างเปล่า แต่ ,, เป็นโมฆะหรือไม่)
คุณสามารถเข้าใกล้สิ่งนี้ด้วยส่วนหัวเมตาดาต้าที่อธิบายวิธีการแยกวิเคราะห์ฟิลด์ แต่จากนั้นคุณอาจใช้ XML เป็นเพราะระเบียบ CSV แบบอิสระประเภทนี้ที่ถูกประดิษฐ์ขึ้น วิธี XML ดูเหมือนว่าจะมีน้ำหนักเกินกว่าที่ควรจะเป็นปัญหาง่ายๆ
ทางเลือกยอดนิยมคือกลยุทธ์ "ตัวคั่นตัวละครแปลก" สิ่งนี้ทำให้เกิดปัญหาการหลบหนีด้านบนมากมายเนื่องจากคุณใช้บางสิ่งเช่น | อักขระ (ไพพ์) สำหรับการกำหนดเขตและ CRLF สำหรับการยกเลิกเร็กคอร์ด สิ่งนี้ไม่ได้รับการแก้ไขเกี่ยวกับปัญหาเขตข้อมูลหลายบรรทัด (ยกเว้นว่าคุณใช้ตัวนับเขตข้อมูล) แต่คุณจะได้รับบรรทัดที่จัดรูปแบบเป็นอย่างดีสำหรับมนุษย์
โดยรวมแล้วหากคุณกำลังมองหาวิธีจัดการไฟล์ประเภทนี้อย่างง่ายในโลกของ Java คุณสามารถโยนOpenCSVไปได้เลย ด้วยวิธีการที่คุณสรุปปัญหาทั้งหมดลงในกรอบที่กำหนดไว้