วิธีนำเข้าไฟล์ CSV ไปยัง MySQL: คู่มือครบวงจรด้วย LOAD DATA INFILE และการแก้ไขปัญหา

1. บทนำการนำเข้าไฟล์ CSV ไปยัง MySQL

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

กรณีการใช้งานทั่วไปสำหรับการนำเข้า CSV

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

2. ข้อกำหนดเบื้องต้น

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

2.1 สภาพแวดล้อมที่ต้องการ

  • การติดตั้ง MySQL Server สมมติว่า MySQL ได้รับการติดตั้งอย่างถูกต้อง ตรวจสอบให้แน่ใจว่า MySQL ทำงานได้อย่างถูกต้องในสภาพแวดล้อมของคุณ ไม่ว่าจะเป็น Windows, macOS หรือ Linux
  • ตรวจสอบสิทธิ์ที่จำเป็น เพื่อทำการนำเข้าไฟล์ CSV ผู้ใช้ MySQL ต้องมีสิทธิ์ที่เหมาะสม โดยเฉพาะสิทธิ์การดำเนินการสำหรับ LOAD DATA INFILE หากไม่มีสิทธิ์นี้ การนำเข้าอาจถูกปฏิเสธ

2.2 รูปแบบไฟล์ CSV

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

3. การนำเข้า CSV ด้วยคำสั่ง LOAD DATA INFILE

วิธีที่นิยมที่สุดในการนำเข้าไฟล์ CSV ไปยัง MySQL คือการใช้คำสั่ง LOAD DATA INFILE คำสั่งนี้ช่วยให้คุณสามารถโหลดข้อมูลจำนวนมากเข้าสู่ฐานข้อมูลได้อย่างง่ายดาย

3.1 ไวยากรณ์พื้นฐาน

ต่อไปนี้เป็นไวยากรณ์พื้นฐานที่ใช้ในการนำเข้าไฟล์ CSV ไปยัง MySQL

LOAD DATA INFILE '/path/to/file.csv' INTO TABLE table_name
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';
  • FIELDS TERMINATED BY : ระบุตัวคั่นฟิลด์ โดยทั่วไปใช้เครื่องหมายจุลภาค
  • LINES TERMINATED BY : ระบุตัวคั่นบรรทัด โดยทั่วไปใช้ \n (บรรทัดใหม่)

3.2 ตัวอย่างการทำงาน

ตัวอย่างต่อไปนี้นำเข้าไฟล์ชื่อ user_data.csv ไปยังตาราง users

LOAD DATA INFILE '/path/to/user_data.csv' INTO TABLE users
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
  • IGNORE 1 LINES : ข้ามแถวแรก (แถวหัวตาราง) ของไฟล์ CSV ตัวเลือกนี้มีประโยชน์เมื่อมีชื่อคอลัมน์อยู่ในบรรทัดแรก

3.3 หมายเหตุสำคัญ: เส้นทางไฟล์และสิทธิ์

เมื่อระบุเส้นทางไฟล์ ไฟล์ต้องอยู่ในไดเรกทอรีที่เซิร์ฟเวอร์ MySQL สามารถเข้าถึงได้ หากเซิร์ฟเวอร์ไม่สามารถเข้าถึงไฟล์ ให้ใช้ LOAD DATA LOCAL INFILE เพื่อโหลดข้อมูลจากฝั่งไคลเอนต์

4. วิธีแก้ปัญหาทั่วไป

ด้านล่างเป็นวิธีแก้ปัญหาสำหรับปัญหาที่พบบ่อยระหว่างการนำเข้าไฟล์ CSV

4.1 ปัญหาเส้นทางไฟล์

หากไม่ได้ระบุเส้นทางไฟล์อย่างถูกต้อง คุณอาจเห็นข้อความข้อผิดพลาดเช่น The MySQL server is not permitted to read from the file ในกรณีนี้ให้ตรวจสอบว่าเส้นทางไฟล์บนเซิร์ฟเวอร์ถูกต้อง คุณยังสามารถใช้ตัวเลือก LOAD DATA LOCAL INFILE เพื่อโหลดไฟล์จากเครื่องท้องถิ่นได้

LOAD DATA LOCAL INFILE '/path/to/file.csv' INTO TABLE table_name
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';

4.2 ปัญหาการเข้ารหัสอักขระ

หากไฟล์ถูกบันทึกด้วยการเข้ารหัสอักขระที่แตกต่าง อาจทำให้ตัวอักษรเสียหายระหว่างการนำเข้า เพื่อหลีกเลี่ยงปัญหานี้ ให้ตรวจสอบการเข้ารหัสของไฟล์ล่วงหน้าและระบุชุดอักขระที่เหมาะสมใน MySQL

SET NAMES 'utf8mb4';

5. ตัวอย่างการปฏิบัติ: ขั้นตอนการนำเข้า CSV

ที่นี่ เราจะอธิบายขั้นตอนแบบละเอียดสำหรับการนำเข้าไฟล์ CSV จริงเข้าสู่ MySQL

5.1 การเตรียมไฟล์ CSV

สร้างไฟล์ CSV (data.csv) ด้วยเนื้อหาดังต่อไปนี้

id,name,age
1,Taro Yamada,28
2,Hanako Sato,34
3,Ichiro Tanaka,45

5.2 การรันคำสั่ง

รันคำสั่งต่อไปนี้เพื่อทำการนำเข้าไฟล์ CSV ที่สร้างขึ้นเข้าสู่ตาราง users

LOAD DATA INFILE '/path/to/data.csv' INTO TABLE users
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 LINES;

คำสั่งนี้จะนำเข้าข้อมูลตั้งแต่แถวที่สองของไฟล์ CSV ไปยังตาราง users

6. ขั้นสูง: การจัดการข้อผิดพลาดและการป้องกันข้อมูลซ้ำ

ส่วนนี้อธิบายวิธีจัดการข้อผิดพลาดระหว่างการนำเข้า CSV และวิธีจัดการกับข้อมูลที่ซ้ำกัน

6.1 การจัดการข้อมูลซ้ำ

หากมีข้อมูลที่มีคีย์เดียวกันอยู่แล้ว คุณสามารถใช้ตัวเลือก REPLACE เพื่อเขียนทับแถวที่ซ้ำด้วยข้อมูลใหม่ได้

LOAD DATA INFILE '/path/to/data.csv' INTO TABLE users
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 LINES
REPLACE;

6.2 การจัดการข้อผิดพลาด

หากเกิดข้อผิดพลาดระหว่างการนำเข้าแต่คุณต้องการให้กระบวนการดำเนินต่อไป ให้ใช้ตัวเลือก IGNORE ตัวเลือกนี้จะข้ามแถวที่มีปัญหาและนำเข้าข้อมูลที่เหลือที่ยังคงถูกต้อง

LOAD DATA INFILE '/path/to/data.csv' INTO TABLE users
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 LINES
IGNORE;

7. สรุป

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

ในบทความต่อ ๆ ไป เราจะอธิบายวิธีการส่งออกข้อมูลจากฐานข้อมูล MySQL อย่างละเอียดต่อไป เพื่อพัฒนาทักษะการจัดการข้อมูลของคุณต่อไป.