ตาราง CSV (.csv)

RFC มาตรฐาน

Comma-Separated Values (CSV) คือรูปแบบข้อความธรรมดาที่ใช้กันอย่างแพร่หลายสำหรับข้อมูลแบบตาราง โดยแต่ละบรรทัดแทนระเบียนข้อมูล และแต่ละฟิลด์คั่นด้วยอักขระแบ่งเขตข้อมูล

แปลง XLSX เป็น CSV

ตัวแปลงจาก XLSX เป็น CSV ฟรีในเบราว์เซอร์ แปลงไฟล์ได้ทันทีบนอุปกรณ์ของคุณ

บีบอัด CSV ออนไลน์

เป็นส่วนตัว - ไฟล์จะไม่ออกจากอุปกรณ์ของคุณ

ตรวจสอบไฟล์และข้อมูลเมตา

ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ CSV โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:

เลือกหรือวางไฟล์ที่นี่

เป็นส่วนตัว - ไฟล์จะไม่ออกจากอุปกรณ์ของคุณ

หรือวาง Ctrl+V
รับประกันความเป็นส่วนตัวโดยไม่มีการส่งข้อมูลผ่านเครือข่าย: อัปโหลด 0 ไบต์ไปยังเซิร์ฟเวอร์ภายนอก การประมวลผลทั้งหมดเกิดขึ้นภายในแซนด์บ็อกซ์ของเบราว์เซอร์ของคุณ

ลายเซ็นส่วนหัวระดับไบต์

ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ CSV โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:

ลายเซ็น HEX (OFFSET 0):

ไม่มีลายเซ็นตายตัว

การแสดงผลรูปแบบ ASCII: ไบต์ข้อความ โดยการเข้ารหัสอาจแตกต่างกัน

มาตรฐาน: RFC 4180 / IETF

ข้อมูลจำเพาะทางเทคนิค

สถาปัตยกรรมคอนเทนเนอร์ไฟล์ข้อความธรรมดาที่มีการคั่นเขตข้อมูล ซึ่งแสดงแถวและคอลัมน์ของข้อมูลตาราง
การบีบอัดGzip / Deflate บีบอัดระเบียนข้อมูลตารางที่มีรูปแบบซ้ำกันได้ 85% - 95%
การจัดลำดับไบต์สตรีมข้อความ UTF-8 (อาจใช้ UTF-8 BOM EF BB BF ซึ่ง Excel ใช้)
พื้นที่สีไม่เกี่ยวข้อง
ช่องสัญญาณและโครงสร้างระเบียนแถวคั่นด้วย CRLF และคอลัมน์คั่นด้วยเครื่องหมายจุลภาค
ขนาดสูงสุดไม่จำกัดขนาด สามารถสตรีมเป็นกิกะไบต์ได้โดยไม่ต้องโหลดไฟล์ทั้งหมดลงในหน่วยความจำ
ความโปร่งใสไม่สามารถใช้ได้
การสตรีมและแบบโปรเกรสซีฟไปป์ไลน์ข้อมูลทั้งหมดรองรับการประมวลผลสตรีมทีละบรรทัดในตัว

ตารางเปรียบเทียบทางเทคนิค: CSV กับคู่แข่ง

คุณลักษณะทางเทคนิคCSV (ปัจจุบัน)Excel (XLSX)ParquetJSON
ประเภทไฟล์ตารางแบบแบนในรูปข้อความธรรมดาสเปรดชีต XML ที่บีบอัดการจัดเก็บแบบคอลัมน์ไบนารีข้อความแบบลำดับชั้น
หลายแผ่นงานไม่มี (มีได้เฉพาะตารางแบบแบนตารางเดียว)มี (หลายเวิร์กบุ๊กและหลายแผ่นงาน)การจัดเก็บตามพาร์ทิชันอาร์เรย์และออบเจ็กต์ซ้อนกัน
ชนิดข้อมูลข้อความดิบที่ไม่ได้ระบุชนิดเซลล์ที่มีชนิดข้อมูล สูตร และการจัดรูปแบบชนิดคอลัมน์ไบนารีที่เข้มงวดชนิดข้อมูลพื้นฐาน (สตริง, ตัวเลข, บูลีน)
การวิเคราะห์ข้อมูลขนาดใหญ่ช้า (ต้องอ่านทุกแถวตามลำดับ)ไม่เหมาะสำหรับข้อมูลขนาดใหญ่เร็วมาก (การเลือกอ่านเฉพาะคอลัมน์และการผลักเงื่อนไขลงไปประมวลผล)ปานกลาง

รูปแบบความเสียหายทั่วไปและคู่มือการกู้คืน Hex

คอลัมน์เลื่อนไปทางขวาหรือจำนวนแถวไม่ตรงกัน

สาเหตุหลัก: ฟิลด์ข้อความที่มีจุลภาคซึ่งไม่ได้ escape และไม่มีเครื่องหมายคำพูดล้อมรอบ

การกู้คืน: RFC 4180 กำหนดให้เขตข้อมูลที่มีเครื่องหมายจุลภาคต้องล้อมรอบด้วยเครื่องหมายคำพูดคู่: "Smith, John"

อักขระที่มีเครื่องหมายกำกับแสดงเป็นสัญลักษณ์แปลกๆ (เช่น é แทน é) ใน Excel

สาเหตุหลัก: Excel เปิดไฟล์ CSV แบบ UTF-8 โดยสันนิษฐานว่าเป็นรหัสอักขระ Windows ANSI/CP1252 รุ่นเก่า

การกู้คืน: เพิ่มเครื่องหมายระบุลำดับไบต์ UTF-8 ขนาด 3 ไบต์ (0xEF 0xBB 0xBF) ไว้ที่ส่วนเริ่มต้นของไฟล์

การวิเคราะห์ความปลอดภัยและเวกเตอร์การโจมตีตัวแยกวิเคราะห์

ไฟล์ CSV เปิดได้โดยตรงในโปรแกรมสเปรดชีต เช่น Excel และ Google Sheets ทำให้ผู้ใช้เสี่ยงต่อการโจมตีแบบฉีดสูตร (CSV Injection)

เวกเตอร์การโจมตีที่ทราบ

  • การฉีดสูตร: เซลล์ที่ขึ้นต้นด้วย '=', '+', '-', หรือ '@' อาจเรียกใช้มาโครสเปรดชีตหรือคำสั่ง DDE (เช่น '=cmd|' /C calc'!A0')
  • การลักลอบส่งข้อมูลออกผ่านสูตร HYPERLINK() ซึ่งส่งข้อมูลในเซลล์ที่ละเอียดอ่อนไปยังเซิร์ฟเวอร์ระยะไกลของผู้โจมตีเมื่อมีการคลิก

แนวทางปฏิบัติที่ดีที่สุดในการป้องกัน: เมื่อส่งออกข้อมูลผู้ใช้เป็น CSV ให้เติมเครื่องหมายคำพูดเดี่ยว (') หรือแท็บไว้หน้าเซลล์ที่ขึ้นต้นด้วย '=', '+', '-', หรือ '@' เพื่อบังคับให้ Excel แสดงเซลล์นั้นเป็นข้อความธรรมดา

ประวัติความเป็นมาและเหตุการณ์สำคัญ

2015มาตรฐาน W3C Model for Tabular Data and Metadata on the Web กำหนดมาตรฐาน CSV บนเว็บ (CSVW) ด้วยตัวอธิบายเมทาเดตา JSON-LD
2005IETF เผยแพร่ RFC 4180 ซึ่งกำหนดข้อกำหนดอย่างเป็นทางการสำหรับไฟล์ CSV
1972คอมไพเลอร์ IBM Fortran (H Extended) ได้นำเข้า/ส่งออกข้อมูลแบบคั่นด้วยเครื่องหมายจุลภาคมาใช้งาน

ข้อได้เปรียบและจุดเด่นสำคัญ

  • ความเรียบง่ายสูงสุด: อ่านได้ในโปรแกรมแก้ไขข้อความทุกตัว และนำเข้าสู่ฐานข้อมูลและสเปรดชีตทุกประเภทได้
  • การสตรีมทีละบรรทัดที่เร็วมากโดยไม่ต้องสร้าง DOM ในหน่วยความจำเต็มรูปแบบ
  • เพิ่มภาระให้น้อยที่สุด: ไม่มีไวยากรณ์แท็กที่เยิ่นเย้อหรือข้อกำหนดสคีมา

ข้อจำกัดทางเทคนิคและข้อควรพิจารณา

  • ไม่มีชนิดข้อมูลมาตรฐาน: ตัวเลข วันที่ ค่าบูลีน และข้อความทั้งหมดจะถูกจัดเก็บเป็นสตริงดิบ
  • ไม่รองรับหลายแผ่นงาน การจัดรูปแบบเซลล์ สูตร หรือเมทาเดตา
  • ตัวคั่นที่ขัดแย้งกัน (จุลภาคในข้อความหรือจุลภาคที่ใช้เป็นจุดทศนิยมในยุโรป) ทำให้เกิดข้อผิดพลาดในการแยกวิเคราะห์บ่อยครั้ง

เกร็ดความรู้ทางเทคนิคที่น่าสนใจ

  • ในหลายประเทศในยุโรปที่ใช้เครื่องหมายจุลภาคเป็นจุดทศนิยม จะใช้เครื่องหมายอัฒภาค (;) แทนเครื่องหมายจุลภาคเป็นตัวคั่น CSV
  • ในอดีต Microsoft Excel ต้องใช้ UTF-8 BOM (0xEF 0xBB 0xBF) เพื่อแสดงอักขระที่มีเครื่องหมายกำกับซึ่งไม่ใช่ ASCII ได้อย่างถูกต้อง
  • หน่วยงานบริการสุขภาพแห่งชาติของสหราชอาณาจักรทำข้อมูลติดตามผู้สัมผัส COVID-19 สูญหายเกือบ 16,000 รายในปี 2020 เนื่องจากนำเข้าข้อมูลลงในรูปแบบสเปรดชีต Excel รุ่นเก่าที่จำกัดจำนวนแถวไว้ที่ 65,536 แถว

คำถามทางเทคนิคที่พบบ่อย

RFC 4180 คืออะไร

RFC 4180 เป็นมาตรฐานอย่างเป็นทางการของ IETF สำหรับ CSV โดยกำหนดให้ใส่เครื่องหมายคำพูดคู่ล้อมรอบฟิลด์ที่มีจุลภาค การขึ้นบรรทัดใหม่ หรือเครื่องหมายคำพูดคู่ และให้ escape เครื่องหมายคำพูดภายในด้วยการเขียนซ้ำสองครั้ง ("")

ทำไมไฟล์ CSV ถึงเปิดขึ้นมาด้วยอักขระที่เสียหายใน Excel

Microsoft Excel รุ่นเก่าจะใช้หน้ารหัสของ Windows ในเครื่อง (เช่น Windows-1252) เป็นค่าเริ่มต้นแทน UTF-8 เมื่อเปิดไฟล์ CSV โดยตรง การเพิ่ม UTF-8 BOM (Byte Order Mark) ที่ต้นไฟล์จะทำให้ Excel ถอดรหัส UTF-8 ได้อย่างถูกต้อง

CSV Injection (การฉีดสูตร) คืออะไร

CSV Injection เกิดขึ้นเมื่อส่งออกอินพุตที่ไม่น่าเชื่อถือจากผู้ใช้ซึ่งขึ้นต้นด้วยอักขระกระตุ้นสูตร ('=', '+', '-', '@') ไปยังไฟล์สเปรดชีต เมื่อเปิดไฟล์ในโปรแกรมอย่าง Excel โปรแกรมจะเรียกใช้สูตรหรือคำสั่ง Dynamic Data Exchange (DDE) โดยอัตโนมัติ ซึ่งอาจทำให้มีการเรียกใช้คำสั่งระบบหรือส่งข้อมูลออกไป

คู่การแปลงไฟล์ CSV ที่เกี่ยวข้อง

XLSX เป็น CSV

การแปลงไฟล์ Excel เป็นตาราง CSV จะดึงข้อมูลตารางดิบออกมาเป็นรูปแบบข้อความที่ใช้กันอย่างแพร่หลาย เพื่อให้ใช้งานร่วมกับซอฟต์แวร์ต่าง ๆ ได้

CSV เป็น XLSX

การแปลงไฟล์ CSV ที่เป็นข้อความธรรมดาให้เป็นสเปรดชีต XLSX ที่มีฟีเจอร์ครบครันช่วยให้สามารถจัดรูปแบบข้อมูลขั้นสูง ใช้สูตร และสร้างหลายชีตได้

CSV เป็น SQLITE

การแปลงไฟล์ข้อความแบบแบนให้เป็นฐานข้อมูลเชิงสัมพันธ์ที่มีโครงสร้าง ช่วยให้คุณสามารถเรียกค้นข้อมูลได้อย่างรวดเร็วและจัดการความสัมพันธ์ของข้อมูลที่ซับซ้อนได้

SQL เป็น CSV

แปลงสคริปต์สำรองข้อมูลฐานข้อมูลเชิงสัมพันธ์ให้เป็นสเปรดชีตแบบตารางแบน เพื่อการวิเคราะห์ข้อมูลและสร้างรายงานที่ง่ายดาย

HDF5 เป็น CSV

การแปลงชุดข้อมูล HDF5 แบบลำดับชั้นเป็นไฟล์ CSV โทรมาตรแบบแบน ช่วยเปลี่ยนบันทึกทางวิทยาศาสตร์หลายมิติที่ซับซ้อนให้เป็นแถวและคอลัมน์อย่างง่ายสำหรับการวิเคราะห์ด้วยสเปรดชีต

NETCDF เป็น CSV

การแปลงกริดทางวิทยาศาสตร์ NetCDF หลายมิติเป็นไฟล์ CSV โทรมาตรแบบแบน ช่วยให้ข้อมูลสภาพอากาศและมหาสมุทรที่ซับซ้อนสามารถอ่านได้ในซอฟต์แวร์สเปรดชีตพื้นฐาน

VCF เป็น CSV

การแปลงไฟล์ vCard เป็น Contacts CSV จะเปลี่ยนบัตรรายชื่อติดต่อแบบลำดับชั้นให้เป็นแถวในสเปรดชีตแบบแบน เพื่อนำเข้าฐานข้อมูลได้ง่าย