บทนำ
เคยไหม ขณะประชุมการขึ้นระบบ 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,ครู
เนื่องจากเป็นรูปแบบ text file สามารถอ่านได้ง่ายจึงสามารถ ใช้ text editor ในการป้อนข้อมูลที่จดไว้ในกระดาษมาใส่ในรูปแบบของ CSV ได้
ข้อควรระวังเมื่อใช้ CSV 🚨
- ข้อมูลที่มีเครื่องหมายจุลภาค: เช่นตัวเลขจำนวนเงิน เช่น 1,000 ต้องระวังเป็นพิเศษ เพราะอาจทำให้ข้อมูลผิดพลาดได้
- การเข้ารหัสตัวอักษร: บางครั้งอาจมีปัญหากับภาษาที่ไม่ใช่ภาษาอังกฤษ
- ข้อจำกัดด้านความปลอดภัย: ไม่เหมาะสำหรับข้อมูลที่ต้องการความปลอดภัยสูง(เช่นรหัสผ่าน) เพราะไม่มีการเข้ารหัส
ซึ่งในโปรแกรมจำพวก 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;
โดย
- 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)