DEV Community

การนำเข้าข้อมูลจากไฟล์ CSV เข้ามาใน Posstgres : ทักษะเบื้องต้นของ Data Engineer

บทนำ

เคยไหม ขณะประชุมการขึ้นระบบ CRM ของฝ่ายขายจะต้องมีการนำรายชื่อลูกค้าของแต่ละคนมาใส่ในฐานข้อมูลพอถามว่าเก็บข้อมูลไว้ที่ไหนจะพบว่าบางคนเก็บใน excle, Google Sheet หรือบางคนจดลงในสมุดก็มีซึ่งพนักงานขายบางคนมีรายชื่อตั้งแต่ 100 ถึง 1,000
ปัญหาต่อมาคือใครจะคีย์ข้อมูลเข้าระบบ ในห้องประชุมเงียบ ประธานในที่ประชุมสั่งการให้ IT เขียนโปรแกรมดึงข้อมูลลูกค้าเข้าฐานข้อมูล (ช้ำคือเราเป็น admin ต้องสวมมงเป็น programmer ซะแล้ว)
ถ้าเรารับทำเราก็จะกลายเป็น programer อีกตำแหน่ง(ในเงินเดือนเท่าเดิม) ต้องรองรับทั้ง Excel,Number(สำหรับ Mac) และ Google Sheet ไหนจะต้องให้เสร็จตาม timeline ของระบบ CRM ที่จะขึ้นอีก
หนึ่งในวิธีแก้ปัญหาที่ดีที่สุดให้กับคนที่ชอบโยนปัญหาให้เราคือ... โยนปัญหากลับ เราแจ้งให้กับทางที่ประชุมว่าพี่แปลงข้อมูลพี่เป็นไฟล์ CSV ได้ไหมเดี๋ยวผม import เองเกิดคำถามไปทั้งห้องประชุม ไฟล์ CSV คืออะไร ?

CSV คืออะไรกันแน่? 🤔

CSV ย่อมาจาก "Comma-Separated Values" หรือ "ค่าที่คั่นด้วยเครื่องหมายจุลภาค" ในภาษาไทย แต่อย่าเพิ่งกลัวกับชื่อที่ดูเป็นทางการนี้! ลองนึกภาพว่า CSV เป็นเหมือนตารางข้อมูลแบบง่ายๆ ที่แต่ละช่องถูกแบ่งด้วยเครื่องหมายจุลภาค (,)

ชื่อ,อายุ,อาชีพ
สมชาย,30,วิศวกร
สมหญิง,28,นักการตลาด
สมศรี,35,ครู
Enter fullscreen mode Exit fullscreen mode

เนื่องจากเป็นรูปแบบ text file สามารถอ่านได้ง่ายจึงสามารถ ใช้ text editor ในการป้อนข้อมูลที่จดไว้ในกระดาษมาใส่ในรูปแบบของ CSV ได้

ข้อควรระวังเมื่อใช้ CSV 🚨

  1. ข้อมูลที่มีเครื่องหมายจุลภาค: เช่นตัวเลขจำนวนเงิน เช่น 1,000 ต้องระวังเป็นพิเศษ เพราะอาจทำให้ข้อมูลผิดพลาดได้
  2. การเข้ารหัสตัวอักษร: บางครั้งอาจมีปัญหากับภาษาที่ไม่ใช่ภาษาอังกฤษ
  3. ข้อจำกัดด้านความปลอดภัย: ไม่เหมาะสำหรับข้อมูลที่ต้องการความปลอดภัยสูง(เช่นรหัสผ่าน) เพราะไม่มีการเข้ารหัส

ซึ่งในโปรแกรมจำพวก Excel,Number(สำหรับ Mac) และ Google Sheet มีความสามารถในการ Save as หรือ Export ข้อมูลเป็นรูปแบบ CSV แทบทุกตัว

เมื่อได้ไฟล์ CSV มาแล้วทำยังไงต่อ

เราสามารถนำข้อมูลจากไฟล์ CSV เข้าสุ่ฐานข้อมูลผ่านคำสั่ง

COPY your_table_name(column1, column2, ...)
FROM '/path/to/your/file.csv'
DELIMITER ','
CSV HEADER;
Enter fullscreen mode Exit fullscreen mode

โดย

  • you_table_name: เป็นตารางที่ต้องการนำข้อมูลจากไฟล์ ไปเก็บ
  • /path/to/your/file.csv: ตำแหน่งไฟล์ CSV ที่เก็บข้อมูล(ต้องระบุเป็น full path)
  • คำสั่ง DELIMITER ',': เป็นการบอกให้ใช้เครื่องหมาย , ในการแบ่งข้อมูล
  • คำสั่ง CSV HEADER : เป็นการบอกให้ดึงข้อมูลแบบ CSV โดยบอกให้รู้ว่าแถวแรกของไฟล์เป็นชื่อคอลัมน์ ไม่ใช่ข้อมูลจริง

ข้อควรรู้
การนำข้อมูลเข้านอกจากคำสั่งCOPY แล้วยังมี \COPY โดยความแตกต่างกันคือ COPY จะดำเนินการบน server ในขณะที่ \COPY ดำเนินการบน client

บทส่งท้าย

การนำเข้าข้อมูลงฐานข้อมูลเห็นหน้าที่หนึ่งในฐานะ database administrator พึ่งกระทำไม่ใช่หน้าที่ในการเขียนโปรแกรมในการนำเข้าข้อมูล ตัว Postres มีเครื่องมือในการนำเข้าข้อมูลสู่ตารางฐานข้อมูล นำเข้าแล้วอย่าลืมตรวจสอบข้อมูลหลังนำเข้าด้วยล่ะ
จริงแล้วการนำข้อมูลเข้า หรือส่งออกจากฐานข้อมูลถือเป็นทักษธหนึ่งที่ Data Engineer พึงมี
ขอให้มีความสุขกับ ใดๆ โลกล้วน Postgres ด้วยนะครับ

Top comments (0)