เครื่องแปลงข้อมูลจาก CSV เป็น YAML

YAML เป็นรูปแบบพื้นฐานของไฟล์กำหนดค่าสมัยใหม่ ไม่ว่าจะเป็นไฟล์ manifest ของ Kubernetes, กระบวนการทำงานของ GitHub Actions, Docker Compose, playbook ของ Ansible หรือ fixture ของ Rails เครื่องมือนี้จะอ่านข้อมูลในรูปแบบ CSV และแปลงเป็นลำดับข้อความในรูปแบบ YAML โดยแต่ละแถวจะกลายเป็นการแมปที่ใช้แถวส่วนหัวเป็นคีย์ ผลลัพธ์ที่ได้ใช้การเยื้องด้วยช่องว่างสองตำแหน่งและเกณฑ์การแสดงแบบบรรทัดเดียว (inline) ที่ระดับ 4 ซึ่งสอดคล้องกับรูปแบบของโปรแกรมแก้ไขและเครื่องมือตรวจสอบโค้ดส่วนใหญ่

วิธีที่ไฟล์ในรูปแบบ CSV ถูกแปลงเป็นรูปแบบ YAML

  1. 1

    วางไฟล์ CSV เข้าไป

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

  2. 2

    เลือกตัวแบ่งข้อมูล

    โดยค่าเริ่มต้นจะใช้เครื่องหมายจุลภาค ให้ป้อน `\t` เพื่อการป้อนข้อมูลที่แยกด้วยแท็บ หรือใช้ตัวอักษรเดียวใดๆ ก็ได้ตามที่ไฟล์ของคุณกำหนด

  3. 3

    เฮดเดอร์กลายเป็นกุญแจสำคัญ

    แถวที่ 1 จะถือเป็นส่วนหัว (header) ส่วนแถวข้อมูลจะถูกจัดเป็นการแมปภายใต้คีย์เหล่านั้นในลำดับเดียวกับคอลัมน์ต้นทาง

  4. 4

    ข้อมูล YAML ถูกส่งออกไปอย่างปลอดภัย

    ผลลัพธ์จะถูกสร้างขึ้นโดยคอมโพเนนต์ Symfony YAML ซึ่งจะใส่เครื่องหมายคำพูดให้กับค่าเมื่อเกิดความกำกวมกับข้อมูลประเภทบูลีน ตัวเลข หรือวันที่

ข้อควรรู้เกี่ยวกับลักษณะเฉพาะของ YAML ก่อนที่จะนำผลลัพธ์ไปวาง

YAML ขึ้นชื่อว่าดูผ่อนปรนบนพื้นผิว แต่แท้จริงแล้วเต็มไปด้วยกับดักที่ซ่อนอยู่ข้างใต้ ตัวแปลงจัดการกับกับดักเหล่านี้ได้เกือบทั้งหมด แต่ข้อมูลของคุณก็ยังต้องผ่านการแปลงไป-กลับให้รอดมาได้

ปัญหาของนอร์เวย์และผองเพื่อน

YAML เวอร์ชัน 1.1 ถือค่าของตัวแปร no, yes, on, off, true, false, y และ n (รวมถึงรูปแบบที่ใช้ตัวพิมพ์ใหญ่) เป็นค่าบูลีน ซึ่งหมายความว่า คอลัมน์รหัสประเทศที่มีค่าเป็น NO เช่น สำหรับนอร์เวย์ อาจเปลี่ยนเป็น false โดยอัตโนมัติได้

เซลล์ต้นทาง ผลลัพธ์ (ไม่ใส่เครื่องหมายคำพูด) ความหมายที่ตั้งใจไว้จริง
NO false ประเทศนอร์เวย์
ON true รัฐออนแทรีโอ
123 123 ตัวเลขหรือรหัส ID
0100 64 (เลขฐานแปด!) รหัสที่ขึ้นต้นด้วยเลขศูนย์

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

ตัวเลือกการจัดรูปแบบ

  • การแทรกข้อความแบบสองช่องว่าง เป็นมาตรฐานสำหรับโปรแกรมแก้ไขส่วนใหญ่ โดยโปรแกรมตรวจค้นเช่น yamllint จะใช้รูปแบบนี้โดยอัตโนมัติ
  • เกณฑ์แบบฝัง (Inline threshold) 4: โครงสร้างที่ซ้อนกันอย่างลึกจะแสดงผลบนบรรทัดเดียวในระดับที่ 4 และถ้าอยู่เหนือระดับนี้ จะขยายไปยังหลายบรรทัด หากต้องการบล็อกที่มีความเข้มงวดมากขึ้น ให้ปรับค่าตามที่เหมาะสม
  • ไม่มีการสร้างแองเคอร์ (anchor) หรือแอเลียส (alias) แต่ละแถวจะเป็นการแมปใหม่เสมอ แม้แถวจะซ้ำกันก็ตาม

ตัวอย่างผลลัพธ์

- name: Alice
  age: 30
- name: Bob
  age: 25

เมื่อใดควรเลือก YAML แทน JSON

  • ไฟล์ config ที่แก้ไขด้วยมือ ซึ่งคำอธิบายและข้อความหลายบรรทัดมีความสำคัญ
  • ไฟล์ manifest ของ Kubernetes, ไปป์ไลน์ CI, และ playbook ของ Ansible
  • ทุกสถานการณ์ที่ผู้คนจะอ่านไฟล์นี้พอ ๆ กับที่เครื่องจักรอ่าน

ในกรณีอื่น JSON จะมีข้อกำหนดที่เข้มงวดกว่าและใช้เวลาน้อยกว่าในการวิเคราะห์ ดังนั้นควรเลือกใช้ JSON สำหรับรูปแบบข้อมูลแบบสายสัญญาณ (wire formats) และข้อมูลที่สร้างขึ้นโดยอัตโนมัติ (generated payloads)

คำถามที่พบบ่อย

YAML 1.1 จะตีความข้อมูล NO ในรูปแบบดิบเป็นค่าบูลีน โดยเครื่องแปลงจะใส่เครื่องหมายอัญประกาศไว้สำหรับค่าที่อาจก่อให้เกิดปัญหา อย่างไรก็ตาม หากโปรแกรมวิเคราะห์ข้อมูลขั้นถัดไปยังคงกำหนดประเภทข้อมูลโดยตรง ควรใส่เครื่องหมายอัญประกาศไว้ก่อนการนำผลลัพธ์ไปใช้งาน หรือเปลี่ยนมาใช้โปรแกรมวิเคราะห์ YAML 1.2 ซึ่งจะจัดการข้อมูลเหล่านี้เป็นสตริงธรรมดา

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

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

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

เครื่องมือที่เกี่ยวข้อง

ตารางอ้างอิง ASCII

ตาราง ASCII ครบตั้งแต่ 0 ถึง 127 พร้อมค่าเลขฐานสิบ ฐานสิบหก ฐานแปด ฐานสอง และรูปแบบการอ้างอิงอักขระแบบตัวเลขของ HTML รวม NUL, LF และ DEL

อ้างอิงตัวอักษร HTML

รายการที่สามารถค้นหาได้ขององค์ประกอบ HTML พร้อมรหัสชื่อและรหัสตัวเลข รวมถึงฟังก์ชันสำเนาด้วยคลิกเดียวสำหรับตัวอักษรพิเศษและสัญลักษณ์ต่างๆ

ตารางอ้างอิงแป้นพิมพ์ลัด

ค้นหาแป้นพิมพ์ลัดเริ่มต้นตามเอกสารของ VS Code, Chrome และ Bash ที่ใช้ GNU Readline บน macOS, Windows และ Linux

เครื่องสร้างตัวอักษรสุ่ม

สร้างตัวอักษร A-Z แบบสุ่ม เลือกจำนวน ตัวพิมพ์ใหญ่ ตัวพิมพ์เล็ก หรือแบบผสม แล้วใช้กับเกม โจทย์ หรือกิจกรรมในห้องเรียน

ตัวลดรูปพีชคณิตบูลีน

ประเมินนิพจน์บูลีนสำหรับทุกชุดอินพุตและดูตารางค่าความจริงที่สมบูรณ์ รองรับตัวแปรสูงสุดห้าตัวและตัวดำเนินการ &, |, !, ^

เครื่องมือตรวจสอบหมายเลขโทรศัพท์

ตรวจสอบโครงสร้างหมายเลขตามประเทศ พร้อมดูภูมิภาค ประเภท และรูปแบบ E.164 ระหว่างประเทศ ในประเทศ และ RFC 3966

เครื่องมือนี้มีให้บริการในภาษาอื่น