ค่าที่คั่นด้วยเครื่องหมายจุลภาค

จากวิกิพีเดีย สารานุกรมเสรี
ข้ามไปที่การนำทาง ข้ามไปที่การค้นหา
ค่าที่คั่นด้วยเครื่องหมายจุลภาค
CsvDelimited001.svg
นามสกุลไฟล์.csv
ประเภทสื่ออินเทอร์เน็ตtext/csv[1]
เปิดตัวครั้งแรก
RFC ที่ไม่ทราบข้อมูล ต.ค. 2548 [2]
ประเภทของรูปแบบหลายแพลตฟอร์ม สตรีมข้อมูลแบบอนุกรม
คอนเทนเนอร์สำหรับข้อมูลฐานข้อมูลที่จัดเป็นรายการแยกฟิลด์
มาตรฐานRFC 4180

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

รูปแบบไฟล์ CSV ไม่ได้มาตรฐานอย่างสมบูรณ์ การแยกฟิลด์ด้วยเครื่องหมายจุลภาคเป็นพื้นฐาน แต่ต้องมีการจัดการเครื่องหมายจุลภาคในข้อมูลหรือตัวแบ่งบรรทัดที่ฝังไว้เป็นพิเศษ การใช้งานบางอย่างไม่อนุญาตเนื้อหาดังกล่าวในขณะที่บางรายการล้อมรอบฟิลด์ด้วยเครื่องหมายคำพูดซึ่งจะสร้างความจำเป็นในการหลีกเลี่ยงสิ่งเหล่านี้อีกครั้งหากมีอยู่ในข้อมูล

คำว่า "CSV" ยังหมายถึงรูปแบบที่คั่นด้วยตัวคั่นที่เกี่ยวข้องอย่างใกล้ชิดซึ่งใช้ตัวคั่นช่องอื่นๆ เช่น เครื่องหมายอัฒภาค [ ต้องการการอ้างอิง ]ซึ่งรวมถึงค่าที่คั่นด้วยแท็บและค่าที่คั่นด้วยช่องว่าง ตัวคั่นรับประกันว่าจะไม่เป็นส่วนหนึ่งของข้อมูลช่วยลดความยุ่งยากในการแยกวิเคราะห์

ไฟล์ที่คั่นด้วยตัวคั่นทางเลือกมักจะ[ ต้องอ้างอิง ] เมื่อได้รับนามสกุล .csv แม้ว่าจะมีการใช้ตัวคั่นฟิลด์ที่ไม่ใช่เครื่องหมายจุลภาคก็ตาม คำศัพท์นี้หลวมอาจทำให้เกิดปัญหาในการแลกเปลี่ยนข้อมูล แอปพลิเคชันจำนวนมากที่ยอมรับไฟล์ CSV มีตัวเลือกให้เลือกอักขระตัวคั่นและเครื่องหมายคำพูด เครื่องหมายอัฒภาคมักใช้แทนเครื่องหมายจุลภาคในภาษายุโรปหลายแห่งเพื่อใช้เครื่องหมายจุลภาคเป็นตัวคั่นทศนิยม และอาจใช้จุดเป็นอักขระการจัดกลุ่มทศนิยม ด้วยเหตุนี้ จึงแนะนำให้ใช้คำว่าค่าที่คั่นด้วยอักขระเป็นคำจำกัดความที่กว้างขึ้นของรูปแบบไฟล์นี้ [ โดยใคร? ]

การแลกเปลี่ยนข้อมูล

CSV เป็นรูปแบบการแลกเปลี่ยนข้อมูลทั่วไปที่ได้รับการสนับสนุนอย่างกว้างขวางจากแอปพลิเคชันผู้บริโภค ธุรกิจ และวิทยาศาสตร์ การใช้งานที่พบบ่อยที่สุดคือการย้ายข้อมูลแบบตาราง[3] [4]ระหว่างโปรแกรมที่ทำงานในรูปแบบที่เข้ากันไม่ได้ (มักเป็นกรรมสิทธิ์หรือไม่มีเอกสาร) [1]วิธีนี้ใช้ได้ผลแม้จะไม่ปฏิบัติตาม RFC 4180 (หรือมาตรฐานอื่นใด) เนื่องจากมีโปรแกรมจำนวนมากรองรับรูปแบบ CSV สำหรับการนำเข้าข้อมูล

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

ข้อมูลจำเพาะ

RFC  4180เสนอข้อกำหนดสำหรับรูปแบบ CSV; อย่างไรก็ตาม การปฏิบัติจริงมักไม่เป็นไปตาม RFC และคำว่า "CSV" อาจหมายถึงไฟล์ใดๆ ที่: [2] [5]

  1. เป็นข้อความธรรมดาโดยใช้ชุดตัวอักษรเช่นASCIIต่างๆUnicodeชุดตัวอักษร (เช่นUTF-8 ) EBCDICหรือJIS กะ ,
  2. ประกอบด้วยระเบียน (โดยทั่วไปหนึ่งระเบียนต่อบรรทัด)
  3. โดยแบ่งระเบียนออกเป็นช่องต่างๆโดยคั่นด้วยตัวคั่น (โดยทั่วไปจะเป็นอักขระที่สงวนไว้เพียงตัวเดียว เช่น เครื่องหมายจุลภาค อัฒภาค หรือแท็บ บางครั้งตัวคั่นอาจมีการเว้นวรรคหรือไม่ก็ได้)
  4. โดยที่ทุกเร็กคอร์ดมีลำดับฟิลด์ที่เหมือนกัน

ภายในข้อจำกัดทั่วไปเหล่านี้ มีการใช้งานรูปแบบต่างๆ มากมาย ดังนั้น หากไม่มีข้อมูลเพิ่มเติม (เช่น ปฏิบัติตาม RFC 4180 หรือไม่) ไฟล์ที่อ้างว่าอยู่ในรูปแบบ "CSV" ก็ไม่ได้ระบุอย่างครบถ้วน ด้วยเหตุนี้ แอปพลิเคชันจำนวนมากที่สนับสนุนไฟล์ CSV ทำให้ผู้ใช้สามารถดูตัวอย่างไฟล์สองสามบรรทัดแรก จากนั้นจึงระบุอักขระตัวคั่น กฎการอ้างอิง ฯลฯ หากรูปแบบไฟล์ CSV ใดไฟล์หนึ่งไม่ตรงกับที่โปรแกรมรับรองรับ มักจะเป็นไปได้ที่จะตรวจสอบและแก้ไขไฟล์ด้วยมือ (เช่น ด้วยโปรแกรมแก้ไขข้อความ ) หรือเขียนสคริปต์หรือโปรแกรมเพื่อสร้างรูปแบบที่สอดคล้อง

ประวัติ

ค่าที่คั่นด้วยเครื่องหมายจุลภาคเป็นรูปแบบข้อมูลที่นำหน้าคอมพิวเตอร์ส่วนบุคคลมาล่วงหน้ามากกว่าหนึ่งทศวรรษ: คอมไพเลอร์IBM Fortran (ขยายระดับ H) ภายใต้OS/360รองรับ CSV ในปี 1972 [6]รายการกำกับ ("รูปแบบอิสระ") อินพุต/เอาต์พุตถูกกำหนดในFORTRAN 77ได้รับการอนุมัติในปี 1978 อินพุตแบบกำหนดรายการที่ใช้เครื่องหมายจุลภาคหรือช่องว่างสำหรับตัวคั่น ดังนั้นสตริงอักขระที่ไม่มีเครื่องหมายอัญประกาศต้องไม่มีเครื่องหมายจุลภาคหรือช่องว่าง[7]

คำว่า "ค่าที่คั่นด้วยเครื่องหมายจุลภาค" และตัวย่อ "CSV" ถูกใช้ในปี 1983 [8]คู่มือสำหรับคอมพิวเตอร์Osborne Executive ซึ่งรวมสเปรดชีตSuperCalc ไว้ด้วยกัน จัดทำเอกสารการประชุมอ้างอิง CSV ที่อนุญาตให้สตริงมีเครื่องหมายจุลภาคฝังตัว แต่ คู่มือไม่ได้ระบุแบบแผนสำหรับการฝังเครื่องหมายอัญประกาศภายในสตริงที่ยกมา [9]

รายการค่าที่คั่นด้วยเครื่องหมายจุลภาคจะพิมพ์ได้ง่ายกว่า (เช่น ลงในการ์ดที่เจาะแล้ว ) มากกว่าข้อมูลที่จัดแนวคอลัมน์คงที่ และมีแนวโน้มน้อยกว่าที่จะให้ผลลัพธ์ที่ไม่ถูกต้องหากมีการเจาะค่าหนึ่งคอลัมน์จากตำแหน่งที่ต้องการ

ไฟล์ที่คั่นด้วยเครื่องหมายจุลภาคใช้สำหรับการแลกเปลี่ยนข้อมูลฐานข้อมูลระหว่างเครื่องของสองสถาปัตยกรรมที่แตกต่างกัน ตัวอักษรข้อความธรรมดาของไฟล์ CSV ที่ส่วนใหญ่หลีกเลี่ยงกันไม่ได้เช่นสั่งไบต์และขนาดคำ ไฟล์ส่วนใหญ่สามารถอ่านได้โดยมนุษย์ ดังนั้นจึงจัดการได้ง่ายขึ้นในกรณีที่ไม่มีเอกสารหรือการสื่อสารที่สมบูรณ์แบบ [10]

มาตรฐานหลักความคิดริเริ่มเปลี่ยน " พฤตินัยนิยามเลือน" เป็นแม่นยำมากขึ้นและทางนิตินัยหนึ่งคือในปี 2005 ด้วยRFC 4180กำหนด CSV เป็นประเภทเนื้อหา MIME [11]ต่อมาในปี 2013 ข้อบกพร่องบางอย่างของ RFC 4180 ได้รับการแก้ไขโดยคำแนะนำของ W3C (12) 

ในปี 2014 IETF ได้เผยแพร่RFC  7111 ที่อธิบายการใช้งานส่วนย่อย URIกับเอกสาร CSV RFC 7111 ระบุวิธีที่สามารถเลือกแถว คอลัมน์ และช่วงเซลล์จากเอกสาร CSV โดยใช้ดัชนีตำแหน่ง [13]

ในปี 2015 W3Cในความพยายามที่จะปรับปรุง CSV ด้วยความหมายที่เป็นทางการ ได้เผยแพร่ร่างคำแนะนำฉบับแรกสำหรับมาตรฐานข้อมูลเมตา CSV ซึ่งเริ่มเป็นคำแนะนำในเดือนธันวาคมของปีเดียวกัน [14]

ฟังก์ชั่นทั่วไป

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

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

CSV เป็นไฟล์ข้อความที่มีตัวคั่นที่ใช้เครื่องหมายจุลภาคเพื่อแยกค่าต่างๆ (การใช้งานเครื่องมือนำเข้า/ส่งออก CSV จำนวนมากทำให้สามารถใช้ตัวคั่นอื่นๆ ได้ ตัวอย่างเช่น การใช้แถว "Sep=^" เป็นแถวแรกในไฟล์ *. csv จะทำให้Excelเปิดไฟล์โดยคาดว่าคาเร็ต "^" จะเป็นตัวคั่นแทนที่จะเป็นเครื่องหมายจุลภาค ",") การใช้งานง่าย CSV อาจห้ามค่าฟิลด์ที่มีเครื่องหมายจุลภาคหรืออักขระพิเศษอื่น ๆ เช่นการขึ้นบรรทัดใหม่การใช้งานที่ซับซ้อนมากขึ้น CSV อนุญาตให้พวกเขามักจะโดยการกำหนด "( ราคาคู่ตัวอักษร) รอบค่าที่ประกอบด้วยอักขระที่สงวนไว้ (เช่นเครื่องหมายจุลภาคราคาคู่หรือน้อยกว่าปกติการขึ้นบรรทัดใหม่). อักขระอัญประกาศคู่ที่ฝังไว้อาจถูกแสดงด้วยอัญประกาศคู่ต่อเนื่องกัน[15]หรือนำหน้าอัญประกาศคู่ด้วยอักขระหลีกเช่นแบ็กสแลช (เช่น ในSybase Central)

รูปแบบ CSV ไม่ จำกัด เฉพาะชุดอักขระ [1] ใช้งานได้ดีกับชุดอักขระUnicode (เช่นUTF-8หรือUTF-16 ) เช่นเดียวกับASCII (แม้ว่าบางโปรแกรมที่รองรับ CSV อาจมีข้อจำกัดของตัวเอง) โดยปกติไฟล์ CSV จะรอดจากการแปลที่ไร้เดียงสาจากชุดอักขระหนึ่งไปยังอีกชุดหนึ่ง (ซึ่งแตกต่างจากรูปแบบข้อมูลที่เป็นกรรมสิทธิ์เกือบทั้งหมด) อย่างไรก็ตาม CSV ไม่ได้ให้วิธีการใดๆ ในการระบุว่าชุดอักขระใดที่ใช้งานอยู่ ดังนั้นจึงต้องมีการสื่อสารแยกกัน หรือกำหนดไว้ที่ส่วนรับ (ถ้าเป็นไปได้)

ฐานข้อมูลที่มีหลายความสัมพันธ์ที่ไม่สามารถส่งออกเป็นไฟล์ CSV เดียว[ ต้องการอ้างอิง ]ในทำนองเดียวกัน CSV ไม่สามารถตามธรรมชาติแทนลำดับชั้นหรือเชิงวัตถุข้อมูล เนื่องจากทุกระเบียน CSV คาดว่าจะมีโครงสร้างเหมือนกัน ดังนั้น CSV จึงไม่ค่อยเหมาะสำหรับเอกสารที่สร้างด้วยHTML , XMLหรือมาร์กอัปหรือเทคโนโลยีการประมวลผลคำอื่นๆ

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

ในฐานข้อมูลเชิงสัมพันธ์ ปัญหาที่คล้ายกันจะได้รับการจัดการโดยการสร้างความสัมพันธ์ที่แยกจากกันสำหรับแต่ละกลุ่มดังกล่าว และการเชื่อมต่อระเบียน "ลูก" กับระเบียน "หลัก" ที่เกี่ยวข้องโดยใช้คีย์ภายนอก (เช่น หมายเลข ID หรือชื่อสำหรับผู้ปกครอง) ในภาษามาร์กอัป เช่น XML โดยทั่วไปแล้ว กลุ่มดังกล่าวจะอยู่ภายในองค์ประกอบหลักและทำซ้ำตามความจำเป็น (เช่น<child>โหนดหลายโหนดภายใน<parent>โหนดเดียว) ด้วย CSV ไม่มีโซลูชันไฟล์เดียวที่ได้รับการยอมรับอย่างกว้างขวาง

ซอฟต์แวร์และขีดจำกัดแถว

ซอฟต์แวร์แต่ละตัวที่ใช้งานได้กับ CSV จะมีขีดจำกัดของจำนวนแถวสูงสุดที่ไฟล์ CSV สามารถมีได้ ด้านล่างนี้คือรายการซอฟต์แวร์ทั่วไปและข้อจำกัดของซอฟต์แวร์: [16]

  • Microsoft Excel: จำกัด 1,048,576 แถว
  • หมายเลขแอปเปิ้ล: จำกัด 1,000,000 แถว
  • Google ชีต: จำกัด 5,000,000 เซลล์ (ผลคูณของคอลัมน์และแถว)
  • OpenOffice และ LibreOffice: จำกัด 1,048,576 แถว
  • โปรแกรมแก้ไขข้อความ (เช่น WordPad, TextEdit, Vim เป็นต้น): ไม่จำกัดแถวหรือเซลล์

การทำให้เป็นมาตรฐาน

ชื่อ "CSV" หมายถึงการใช้เครื่องหมายจุลภาคเพื่อแยกเขตข้อมูล อย่างไรก็ตาม คำว่า "CSV" นั้นถูกใช้อย่างกว้างขวางเพื่ออ้างถึงกลุ่มรูปแบบขนาดใหญ่ที่แตกต่างกันไปในหลายๆ ด้าน การใช้งานบางอย่างอนุญาตหรือกำหนดให้ใส่เครื่องหมายอัญประกาศเดี่ยวหรือคู่รอบบางฟิลด์หรือทั้งหมด และบางระเบียนสำรองเป็นส่วนหัวที่มีรายชื่อเขตข้อมูล ชุดอักขระที่ใช้ไม่ได้กำหนดไว้: แอปพลิเคชันบางตัวต้องการ Unicode byte order mark (BOM) เพื่อบังคับใช้การตีความUnicode (บางครั้งแม้แต่UTF-8 BOM) [1]ไฟล์ที่ใช้อักขระแท็บแทนเครื่องหมายจุลภาคสามารถเรียกอย่างแม่นยำมากขึ้นว่า "TSV" สำหรับค่าคั่นด้วยแท็บ

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

OKI แพ็คเกจข้อมูลตารางแบบไม่มีแรงเสียดทาน

ในปี 2554 Open Knowledge Foundation (OKF) และพันธมิตรหลายรายได้สร้างคณะทำงานโปรโตคอลข้อมูล ซึ่งต่อมาได้พัฒนาเป็นโครงการ Frictionless Data หนึ่งในรูปแบบหลักที่พวกเขาเปิดตัวคือ Tabular Data Package แพ็คเกจข้อมูลแบบตารางอิงตาม CSV เป็นหลัก โดยใช้เป็นรูปแบบการรับส่งข้อมูลหลักและเพิ่มประเภทพื้นฐานและข้อมูลเมตาของสคีมา (CSV ไม่มีข้อมูลประเภทใด ๆ เพื่อแยกความแตกต่างของสตริง "1" จากหมายเลข 1) [17]

Frictionless Data Initiative ยังจัดเตรียมรูปแบบคำอธิบายภาษาถิ่น CSV มาตรฐานสำหรับการอธิบายภาษาถิ่นต่างๆ ของ CSV เช่น การระบุตัวคั่นฟิลด์หรือกฎการเสนอราคา [18]

มาตรฐานข้อมูลตารางอินเทอร์เน็ต W3C

ในปี 2013 คณะทำงาน"CSV บนเว็บ" ของW3C ได้เริ่มระบุเทคโนโลยีที่ให้ความสามารถในการทำงานร่วมกันที่สูงขึ้นสำหรับเว็บแอปพลิเคชันโดยใช้ CSV หรือรูปแบบที่คล้ายคลึงกัน [19]คณะทำงานเสร็จสิ้นการทำงานในเดือนกุมภาพันธ์ 2559 และปิดอย่างเป็นทางการในเดือนมีนาคม 2559 ด้วยการเปิดตัวเอกสารชุดและคำแนะนำ W3C [20] สำหรับการสร้างแบบจำลอง "ข้อมูลตาราง" [21]และการปรับปรุง CSV ด้วยข้อมูลเมตาและความหมาย .

มาตรฐาน RFC 4180

มาตรฐานทางเทคนิค RFC 4180 ปี 2548 กำหนดรูปแบบไฟล์ CSV และกำหนดประเภท MIME "text/csv" สำหรับการจัดการฟิลด์แบบข้อความ อย่างไรก็ตาม การตีความข้อความของแต่ละฟิลด์ยังคงเป็นเฉพาะแอปพลิเคชัน ไฟล์ที่เป็นไปตามมาตรฐาน RFC 4180 จะทำให้การแลกเปลี่ยน CSV ง่ายขึ้นและควรพกพาได้อย่างกว้างขวาง ท่ามกลางข้อกำหนด:

  • บรรทัดสไตล์ MS-DOS ที่ลงท้ายด้วยอักขระ (CR/LF) (เป็นทางเลือกสำหรับบรรทัดสุดท้าย)
  • เรกคอร์ดส่วนหัวที่เป็นตัวเลือก (ไม่มีวิธีการตรวจสอบว่ามีอยู่หรือไม่ ดังนั้นจึงต้องระมัดระวังเมื่อนำเข้า)
  • แต่ละระเบียนควรมีช่องที่คั่นด้วยเครื่องหมายจุลภาคจำนวนเท่ากัน
  • ข้อมูลใด ๆ ที่อาจจะยกมา (กับคำพูดคู่)
  • ช่องที่มีการขึ้นบรรทัดใหม่ เครื่องหมายคำพูดคู่ หรือเครื่องหมายจุลภาคควรยกมา (หากไม่เป็นเช่นนั้น ไฟล์จะไม่สามารถประมวลผลได้อย่างถูกต้อง)
  • หากใช้เครื่องหมายอัญประกาศคู่เพื่อล้อมรอบฟิลด์ เครื่องหมายอัญประกาศคู่ในฟิลด์จะต้องแสดงด้วยอักขระอัญประกาศคู่สองตัว

รูปแบบสามารถประมวลผลได้โดยโปรแกรมส่วนใหญ่ที่อ้างว่าอ่านไฟล์ CSV ข้อยกเว้นคือ(a)โปรแกรมอาจไม่รองรับการขึ้นบรรทัดใหม่ภายในฟิลด์ที่ยกมา(b)โปรแกรมอาจสร้างความสับสนให้กับส่วนหัวที่เป็นตัวเลือกกับข้อมูล หรือตีความบรรทัดข้อมูลแรกเป็นส่วนหัวที่เป็นตัวเลือก และ(c) double quotes ในฟิลด์อาจไม่ แยกวิเคราะห์อย่างถูกต้องโดยอัตโนมัติ

กฎพื้นฐาน

มีเอกสารทางการจำนวนมากที่อธิบายรูปแบบ "CSV" IETF RFC 4180 (สรุปข้างต้น) กำหนดรูปแบบสำหรับ "text / CSV" ชนิดไมม์ที่ลงทะเบียนกับIANA

กฎทั่วไปของข้อกำหนดและการใช้งาน "CSV" เหล่านี้และอื่นๆ มีดังนี้:

  • CSV เป็นที่คั่นด้วยรูปแบบข้อมูลที่มีฟิลด์ / คอลัมน์คั่นด้วยเครื่องหมายจุลภาค ตัวละครและรายการ / แถวยกเลิกโดยการขึ้นบรรทัดใหม่
  • ไฟล์ CSV ไม่ต้องใช้เฉพาะการเข้ารหัสอักขระ , ใบสั่งไบต์หรือรูปแบบเทอร์มิบรรทัด (ซอฟต์แวร์บางส่วนไม่สนับสนุนรูปแบบเส้นสิ้นทั้งหมด)
  • เร็กคอร์ดสิ้นสุดที่ตัวสิ้นสุดบรรทัด อย่างไรก็ตาม line-terminators สามารถฝังเป็นข้อมูลภายในฟิลด์ ดังนั้นซอฟต์แวร์ต้องรู้จักตัวคั่นบรรทัดที่ยกมา (ดูด้านล่าง) เพื่อที่จะรวบรวมเร็กคอร์ดทั้งหมดจากหลายบรรทัดได้อย่างถูกต้อง
  • ระเบียนทั้งหมดควรมีจำนวนเขตข้อมูลเท่ากันในลำดับเดียวกัน
  • ข้อมูลภายในฟิลด์จะได้รับการตีความเป็นลำดับของอักขระไม่ใช่ลำดับของบิตหรือไบต์ (ดู RFC 2046 ส่วนที่ 4.1) ตัวอย่างเช่น ปริมาณตัวเลข 65535 อาจแสดงเป็นอักขระ ASCII 5 ตัว "65535" (หรือรูปแบบอื่นๆ เช่น "0xFFFF", "000065535.000E+00" เป็นต้น); แต่ไม่ใช่เป็นลำดับ 2 ไบต์ที่ตั้งใจให้ถือว่าเป็นจำนวนเต็มไบนารีตัวเดียวแทนที่จะเป็นอักขระสองตัว (เช่น ตัวเลข 11264–11519 มีเครื่องหมายจุลภาคเป็นไบต์ลำดับสูง: ) หากไม่ปฏิบัติตามแบบแผน "ข้อความธรรมดา" นี้ ไฟล์ CSV จะไม่มีข้อมูลเพียงพอที่จะตีความได้อย่างถูกต้องอีกต่อไป ไฟล์ CSV ไม่น่าจะส่งผ่านสถาปัตยกรรมคอมพิวเตอร์ที่แตกต่างกัน และจะไม่สอดคล้องกับข้อความ/csv MIME ประเภทord(',')*256..ord(',')*256+255
  • ช่องที่อยู่ติดกันต้องคั่นด้วยเครื่องหมายจุลภาคเดียว อย่างไรก็ตาม รูปแบบ "CSV" แตกต่างกันอย่างมากในตัวเลือกตัวคั่นนี้ โดยเฉพาะอย่างยิ่ง ในโลแคลที่ใช้เครื่องหมายจุลภาคเป็นตัวคั่นทศนิยม ใช้เซมิโคลอน TAB หรืออักขระอื่นๆ แทน
    1997,ฟอร์ด,E350
  • ฟิลด์ใด ๆอาจถูกยกมา (นั่นคือ อยู่ภายในอักขระอัญประกาศคู่) ในขณะที่บางฟิลด์ต้องถูกยกมา ตามที่ระบุไว้ในกฎและตัวอย่างต่อไปนี้:
    " 1997","ฟอร์ด","E350"
  • ฟิลด์ที่มีเครื่องหมายจุลภาคฝังตัวหรืออักขระอัญประกาศคู่ต้องยกมา
    1997,Ford,E350,"สุดยอดรถกระบะหรู"
  • อักขระอัญประกาศคู่ที่ฝังไว้แต่ละตัวต้องแสดงด้วยอักขระอัญประกาศคู่หนึ่งคู่
    1997,Ford,E350,"Super,"หรูหรา""รถบรรทุก"
  • ต้องระบุช่องที่มีการขึ้นบรรทัดใหม่ (อย่างไรก็ตาม การใช้งาน CSV จำนวนมากไม่สนับสนุนการขึ้นบรรทัดใหม่แบบฝัง)
    1997,Ford,E350,"ไปซื้อเลยตอนนี้
    พวกเขากำลังไปอย่างรวดเร็ว"
    
  • ในการใช้งาน CSV บางอย่าง[ อะไร? ] , ช่องว่างและแท็บนำหน้าและต่อท้ายถูกตัดแต่ง (ละเว้น) การตัดแต่งดังกล่าวไม่ได้รับอนุญาตโดย RFC 4180 ซึ่งระบุว่า "ช่องว่างถือเป็นส่วนหนึ่งของฟิลด์และไม่ควรละเลย"
    1997, ฟอร์ด, E350
    ไม่เหมือนกับ
    1997,ฟอร์ด,E350
    
  • ตาม RFC 4180 ไม่อนุญาตให้เว้นวรรคนอกเครื่องหมายคำพูดในฟิลด์ อย่างไรก็ตาม RFC ยังกล่าวอีกว่า "ช่องว่างถือเป็นส่วนหนึ่งของฟิลด์และไม่ควรละเลย" และ "ผู้ดำเนินการควร 'อนุรักษ์นิยมในสิ่งที่คุณทำ เสรีในสิ่งที่คุณยอมรับจากผู้อื่น' (RFC 793 หัวข้อ 2.10) เมื่อประมวลผลไฟล์ CSV"
    1997 "ฟอร์ด" ,E350
  • ในการใช้งาน CSV ที่ตัดช่องว่างนำหน้าหรือต่อท้าย ฟิลด์ที่มีช่องว่างดังกล่าวเป็นข้อมูลที่มีความหมายจะต้องยกมา
    1997,Ford,E350,"รถบรรทุกสุดหรู"
  • การประมวลผลอัญประกาศคู่ต้องใช้ก็ต่อเมื่อฟิลด์เริ่มต้นด้วยอัญประกาศคู่ อย่างไรก็ตาม โปรดทราบว่าไม่อนุญาตให้ใช้เครื่องหมายคำพูดคู่ในฟิลด์ที่ไม่มีเครื่องหมายคำพูดตาม RFC 4180
    ลอสแอนเจลิส,34°03′N,118°15′W
    มหานครนิวยอร์ก,40°42′46″N,74°00′21″W
    ปารีส,48°51′24″N,2°21′03″E
    
  • เร็กคอร์ดแรกอาจเป็น "ส่วนหัว" ซึ่งมีชื่อคอลัมน์ในแต่ละฟิลด์ (ไม่มีวิธีที่เชื่อถือได้ในการบอกว่าไฟล์ทำสิ่งนี้หรือไม่ อย่างไรก็ตาม เป็นเรื่องปกติที่จะใช้อักขระอื่นที่ไม่ใช่ตัวอักษร ตัวเลข และ ขีดเส้นใต้ชื่อคอลัมน์ดังกล่าว)
    ปี,ยี่ห้อ,รุ่น
    1997,ฟอร์ด,E350
    2000,ปรอท,เสือภูเขา
    

ตัวอย่าง

ปี ทำ แบบอย่าง คำอธิบาย ราคา
1997 ฟอร์ด E350 ac, abs, ดวงจันทร์ 3000.00
1999 เชฟวี่ กิจการ "Extended Edition" 4900.00
1999 เชฟวี่ กิจการ "Extended Edition ใหญ่มาก" 500,000.00
พ.ศ. 2539 รถจี๊ป แกรนด์ เชอโรกี ต้องขาย!
แอร์ มูนรูฟ โหลดเลย
4799.00

ตารางข้อมูลข้างต้นอาจแสดงในรูปแบบ CSV ดังต่อไปนี้:

ปี,ยี่ห้อ,รุ่น,รายละเอียด,ราคา
1997,Ford,E350,"ac,abs,moon",3000.00
1999,Chevy,"Venture ""Extended Edition""","",4900.00
1999,Chevy,"Venture ""Extended Edition, Very Large""",5000.00
1996,Jeep,Grand Cherokee,"ต้องขาย!
แอร์ หลังคามูน โหลด",4799.00

ตัวอย่างไฟล์ CSV ของสหรัฐอเมริกา/สหราชอาณาจักร (โดยที่ตัวคั่นทศนิยมเป็นจุด/หยุดเต็ม และตัวคั่นค่าเป็นจุลภาค):

ปี,ยี่ห้อ,รุ่น,ความยาว
1997,ฟอร์ด,E350,2.35
2000,ปรอท,เสือภูเขา,2.38

ตัวอย่างของไฟล์ CSV/ DSV แบบยุโรปที่คล้ายคลึงกัน(โดยที่ตัวคั่นทศนิยมคือเครื่องหมายจุลภาคและตัวคั่นค่าคือเครื่องหมายอัฒภาค):

ปี;ยี่ห้อ;รุ่น;ความยาว
1997;ฟอร์ด;E350;2,35
2000;ปรอท;เสือภูเขา;2,38

รูปแบบหลังไม่สอดคล้องกับ RFC 4180 [22] การปฏิบัติตามข้อกำหนดสามารถทำได้โดยการใช้เครื่องหมายจุลภาคแทนเครื่องหมายอัฒภาคเป็นตัวคั่นและใช้เครื่องหมายสากลสำหรับการแทนเครื่องหมายทศนิยมหรือวิธีอ้างอิงตัวเลขทั้งหมดที่มีเครื่องหมายทศนิยม

การสนับสนุนแอปพลิเคชัน

รูปแบบไฟล์ CSV รองรับสเปรดชีตและระบบจัดการฐานข้อมูลเกือบทั้งหมดรวมถึง Apple Numbers , LibreOffice CalcและApache OpenOffice Calc Microsoft Excelยังรองรับ CSV แต่ด้วยข้อจำกัดเมื่อเปรียบเทียบกับซอฟต์แวร์สเปรดชีตอื่นๆ (เช่น ณ ปี 2019 Excel ยังไม่สามารถส่งออกไฟล์ CSV ในการเข้ารหัสอักขระ UTF-8 ที่ใช้กันทั่วไปได้)

รูปแบบ CSV ได้รับการสนับสนุนโดยห้องสมุดใช้ได้หลายภาษาโปรแกรม ส่วนใหญ่จะมีวิธีระบุตัวคั่นฟิลด์ ตัวคั่นทศนิยม การเข้ารหัสอักขระ แบบแผนการเสนอราคา รูปแบบวันที่ ฯลฯ

emacsแก้ไขสามารถทำงานบนไฟล์ CSV ใช้โหมด CSV-nav [23]

โปรแกรมอรรถประโยชน์จำนวนมากบนระบบสไตล์Unix (เช่นcut , paste , join , sort , uniq , awk ) สามารถแยกไฟล์บนตัวคั่นด้วยจุลภาค และสามารถประมวลผลไฟล์ CSV อย่างง่ายได้ อย่างไรก็ตาม เมธอดนี้ไม่สามารถจัดการเครื่องหมายจุลภาคภายในสตริงที่ยกมาได้อย่างถูกต้อง

ดูเพิ่มเติม

อ้างอิง

  1. อรรถa b c d Shafranovich, Y. (ตุลาคม 2548) รูปแบบที่พบบ่อยและชนิด mime สำหรับแฟ้ม IETF NS. 1. ดอย : 10.17487/RFC4180 . อาร์เอฟซี4180 .
  2. ^ a b Shafranovich (2005)กล่าวว่า "RFC นี้จัดทำเอกสารรูปแบบของไฟล์ค่าที่คั่นด้วยเครื่องหมายจุลภาค (CSV) และลงทะเบียนประเภท MIME "text/csv" สำหรับ CSV ตาม RFC 2048 อย่างเป็นทางการ
  3. ^ "CSV - ค่าที่คั่นด้วยจุลภาค" . สืบค้นเมื่อ2017-12-02 .
  4. ^ "ไฟล์ CSV" . สืบค้นเมื่อ4 มิถุนายน 2557 .
  5. ^ "จุลภาคคั่นระหว่างค่า (CSV) รูปแบบไฟล์มาตรฐาน" Edoceo, Inc สืบค้นเมื่อ4 มิถุนายน 2557 .
  6. ^ IBM FORTRAN Program Products for OS และส่วนประกอบ CMS ของ VM/370 General Information (PDF) (first ed.), July 1972, p. 17, GC28-6884-0 , ดึงข้อมูล5 กุมภาพันธ์ 2016 , สำหรับผู้ใช้ที่คุ้นเคยกับโปรเซสเซอร์ FORTRAN IV G และ H รุ่นก่อน นี่คือความสามารถด้านภาษาใหม่ที่สำคัญ
  7. ^ "List-Directed I/O" , การอ้างอิงภาษา Fortran 77 , Oracle
  8. ^ "SuperCalc²แพคเกจสเปรดชีทสำหรับ IBM, CP / M" สืบค้นเมื่อ11 ธันวาคม 2017 .
  9. ^ "คั่นด้วยเครื่องหมายจุลภาคราคาโครงสร้างรูปแบบไฟล์" สืบค้นเมื่อ11 ธันวาคม 2017 .
  10. ^ "CSV, ค่าที่คั่นด้วยจุลภาค (RFC 4180)" . สืบค้นเมื่อ4 มิถุนายน 2557 .
  11. ^ RFC 4180: รูปแบบทั่วไปและประเภท MIME สำหรับค่าคั่นด้วยเครื่องหมายจุลภาค (CSV) ไฟล์ ดอย : 10.17487/RFC4180 . อาร์เอฟซี4180 . สืบค้นเมื่อ22 ธันวาคม 2020 .
  12. ^ ดู sparql11-results-csv-tsvคำแนะนำ W3C แรกที่มีขอบเขตใน CSV และเติมข้อบกพร่องบางอย่างของ RFC 4180
  13. ^ RFC 7111: URI Fragment ตัวบ่งชี้สำหรับข้อความ csv / Media Type ดอย : 10.17487/RFC7111 . อาร์เอฟซี7111 . สืบค้นเมื่อ22 ธันวาคม 2020 .
  14. ^ "รูปแบบตารางข้อมูลและเมตาดาต้าบนเว็บ - W3C คำแนะนำ 17 ธันวาคม 2015" สืบค้นเมื่อ23 มีนาคม 2559 .
  15. ^ * Creativyst (2010), How To: The Comma Separated Value (CSV) File Format , creativyst.com , ดึงข้อมูลเมื่อ 24 พฤษภาคม 2010
  16. ^ "ทำความเข้าใจ CSV และขีดจำกัดแถว" . ที่ดึงก.พ. 28, 2021
  17. ^ "แพ็คเกจข้อมูลแบบตาราง" . รายละเอียดข้อมูลฝืด
  18. ^ "ภาษาถิ่น CSV" . รายละเอียดข้อมูลฝืด
  19. ^ "CSV บนเว็บคณะทำงาน" . W3C CSV WG. 2013 . สืบค้นเมื่อ2015-04-22 .
  20. ^ CSV บนเว็บ Repository (บน GitHub)
  21. ^ โมเดลสำหรับข้อมูลแบบตารางและข้อมูลเมตาบนเว็บ (คำแนะนำ W3C)
  22. ^ Shafranovich (2005)กล่าวว่า "ภายในส่วนหัวและแต่ละระเบียนอาจจะมีหนึ่งหรือมากกว่าหนึ่งสาขาที่คั่นด้วยเครื่องหมายจุลภาค."
  23. ^ "EmacsWiki: Csv Nav" .

อ่านเพิ่มเติม

  • "IBM DB2 คู่มือการดูแลระบบ - รูปแบบโหลดนำเข้าและส่งออกแฟ้ม" ไอบีเอ็ม . เก็บถาวรจากต้นฉบับเมื่อ 2016-12-13 . สืบค้นเมื่อ2016-12-12 . (มีคำอธิบายไฟล์ของไฟล์ ASCII ที่มีตัวคั่น (.DEL) (รวมถึงไฟล์ที่คั่นด้วยเครื่องหมายจุลภาคและอัฒภาค) และไฟล์ ASCII แบบไม่คั่น (.ASC) สำหรับการถ่ายโอนข้อมูล)