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 อย่างละเอียดต่อไป เพื่อพัฒนาทักษะการจัดการข้อมูลของคุณต่อไป.


