Excel: import CSV

ในโลกของการจัดการข้อมูลขนาดใหญ่ (Big Data) การนำเข้าข้อมูลจากไฟล์ CSV (Comma Separated Values) เข้าสู่ระบบฐานข้อมูลเชิงสัมพันธ์อย่าง PostgreSQL ถือเป็นขั้นตอนพื้นฐานที่สำคัญที่สุดสำหรับ Data Architect และ Data Engineer การทำความเข้าใจวิธีการนำเข้าข้อมูลอย่างมีประสิทธิภาพจึงเป็นทักษะที่ขาดไม่ได้

บทความนี้จะเจาะลึกถึงวิธีการนำเข้าข้อมูล CSV เข้าสู่ PostgreSQL อย่างถูกต้องและปลอดภัย โดยเน้นที่ความแตกต่างระหว่างคำสั่ง \[copy\]. และ COPY ซึ่งเป็นหัวใจหลักในการจัดการ ETL (Extract, Transform, Load) ข้อมูล

💡 ทำความเข้าใจหลักการทำงาน: COPY vs. \copy

ก่อนเริ่มต้น เราต้องเข้าใจความแตกต่างของคำสั่งหลักสองตัวใน PostgreSQL:

  • \[copy\]. (psql meta-command): เป็นคำสั่งที่ใช้ใน Command Line Interface (CLI) ของ psql โดยเฉพาะ มีความสะดวกสำหรับผู้ใช้งานทั่วไป เพราะมันจัดการเรื่องสิทธิ์ (Permissions) และการส่งข้อมูลจากเครื่องไคลเอนต์ (Client Machine) เข้าสู่ฐานข้อมูลได้ง่ายกว่า
  • COPY (SQL command): เป็นคำสั่ง SQL มาตรฐานที่ทำงานในระดับเซิร์ฟเวอร์ (Server-side) เหมาะสำหรับการดำเนินการที่ต้องการประสิทธิภาพสูงมาก หรือเมื่อไฟล์ CSV อยู่บนเซิร์ฟเวอร์ฐานข้อมูลโดยตรง

🚀 วิธีที่ 1: การใช้ \copy (แนะนำสำหรับผู้เริ่มต้น)

คำสั่ง \[copy\]. เป็นวิธีที่ง่ายที่สุดและแนะนำสำหรับผู้ที่ทำงานผ่านโปรแกรม psql เพราะมันช่วยให้คุณสามารถระบุไฟล์ที่อยู่บนเครื่องคอมพิวเตอร์ของคุณได้โดยตรง

  1. เตรียมตาราง: ตรวจสอบให้แน่ใจว่าคุณได้สร้างตารางใน PostgreSQL ที่มีโครงสร้าง (Column Names และ Data Types) ตรงกับไฟล์ CSV ที่จะนำเข้า
  2. รันคำสั่ง: ใช้คำสั่ง \[copy\]. โดยระบุชื่อไฟล์และตารางปลายทาง

SQL

-- ตัวอย่างการใช้ \[copy\]. สำหรับการนำเข้าไฟล์ CSV
\[copy\]. table_name FROM 'path/to/your/file.csv' WITH (FORMAT CSV, HEADER TRUE, DELIMITER ',');

คำอธิบาย:

  • FORMAT CSV: ระบุว่าไฟล์เป็นรูปแบบ CSV
  • HEADER TRUE: บอกให้ระบบรู้ว่าแถวแรกของไฟล์คือชื่อคอลัมน์ (Column Headers)
  • DELIMITER ',': ระบุตัวแบ่งข้อมูล (ในกรณีนี้คือเครื่องหมายจุลภาค)

⚙️ วิธีที่ 2: การใช้ COPY (สำหรับประสิทธิภาพสูง)

หากไฟล์ CSV ของคุณมีขนาดใหญ่มาก หรือคุณต้องการให้การทำงานเกิดขึ้นบนเซิร์ฟเวอร์ฐานข้อมูลโดยตรง (Server-side) ให้ใช้คำสั่ง COPY

SQL

-- ตัวอย่างการใช้ COPY (ต้องเข้าถึงไฟล์บนเซิร์ฟเวอร์) 
COPY table_name FROM '/server/path/to/your/file.csv' WITH (FORMAT CSV, HEADER TRUE, DELIMITER ',');

✨ ข้อควรระวังและ Best Practices สำหรับ Data Architect

การนำเข้าข้อมูลไม่ได้มีแค่คำสั่งเท่านั้น แต่ยังมีรายละเอียดสำคัญที่ต้องพิจารณา:

  • Encoding: หากข้อมูลของคุณมีภาษาไทยหรืออักขระพิเศษ ควรระบุ ENCODING 'UTF8' เสมอ เพื่อป้องกันปัญหาภาษาเพี้ยน
  • Delimiter ที่ไม่มาตรฐาน: หากไฟล์ของคุณใช้ตัวแบ่งที่ไม่ใช่เครื่องหมายจุลภาค (เช่น Pipe | หรือ Tab) ต้องระบุในส่วน DELIMITER ให้ถูกต้อง
  • การจัดการข้อมูลว่าง (NULL): หากไฟล์ CSV ใช้ค่าอื่นแทนค่าว่าง (เช่น ‘N/A’) คุณอาจต้องใช้คำสั่ง NULL AS 'N/A' เพื่อให้ PostgreSQL อ่านค่าเหล่านั้นเป็น NULL อย่างถูกต้อง

✅ บทสรุป

ไม่ว่าคุณจะใช้คำสั่ง \[copy\]. หรือ COPY หัวใจสำคัญของการนำเข้าข้อมูล CSV คือการกำหนดพารามิเตอร์ (Parameters) ที่ถูกต้อง ทั้งเรื่อง FORMAT, DELIMITER, และ ENCODING การทำความเข้าใจความแตกต่างระหว่างเครื่องมือไคลเอนต์และเซิร์ฟเวอร์จะช่วยให้คุณเลือกวิธีการที่เหมาะสมที่สุด ไม่ว่าจะเป็นการนำเข้าข้อมูลชุดเล็กเพื่อการทดสอบ หรือการโหลดข้อมูลขนาดเทราไบต์เพื่อการวิเคราะห์ในระดับองค์กร

Exit mobile version