Tuesday, July 6, 2010

Load data from text file to MySQL

  • ประเด็นมีอยู่ว่า มีคนเค้า export ข้อมูลจาก access เป็น text file
  • ทีนี้เค้าคนที่ export เค้าใช้ navicat นำเค้าข้อมูล text นั้นไปยัง MySQL
  • มันมาเกี่ยวกับเราอ่ะ ดิคือ ข้อมูลที่นำเข้าอ่ะ มีหลาย table มันเลยมาเกี่ยวกับเราหว่า
  • คือ เราต้อง up data text file to MySQL นั่นเอง
  • ตัว navicat มันก็ดีอยู่แต่เราใช้มันไม่ค่อยเป็นหว่า
  • ข้อมูลประมาณ 7 - 9 แสน record เอง ธรรมดามาก (ถ้าเรานำเข้าเครื่อง local ไม่เกิน 30 วินาที)
  • จะ up text file ขึ้น server ก่อนค่อยใช้ navicat บน server ไง แต่ CentOS มันมี navicat ให้ใช้หรือโปรแกรมอื่นให้ใช้มั้ยหว่า ถึงใช้ได้เราก็ไม่มีสิทธิ์ remote desktop อยู่ดี
  • เหลือทางเดียวที่ทำได้คือ หาคำสั่งมา import เลย ประมาณ up data text file ขึ้นผ่าน ftp ไปก่อนค่อยไป import ผ่านคำสั่งเลยที่ local บน server อันนี้โอเคเลย

สมมุติ

  • host = localhost
  • user = root
  • password = 123456
  • database = dbsample
  • table = tbsample (id, name, remark);
  • text = data.txt
Solved
  • ให้เราสร้างไฟล์คำสั่ง ในที่นี้ตั้งชื่อเป็น loadscript.sql มี content ประมาณนี้
-- This is comment for loaddata.sql
-- load data for table `dbsample`
--
LOAD DATA LOCAL INFILE 'data.txt'
INTO TABLE tb_name
CHARACTER SET tis620
FIELDS TERMINATED BY ',' ENCLOSED BY '"'

LINES TERMINATED BY '\r\n';

## หรือ แบบที่ 2 คือ ระบุว่า ค่าในแต่ละ column ซึ่งเราระบุชื่อ column ได้เลย

LOAD DATA LOCAL INFILE 'data.txt'
INTO TABLE table_name
CHARACTER SET tis620
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
(@var1, @var2, @var3) SET
id=@var1, remark=@var3;
  • หลังจากเราทำการสร้างและบันทึกไฟล์ loadscript.sql เรียบร้อย ต่อเป็นเป็นคำสั่ง execute file command นั้น ให้เราพิมพ์คำสั่งดังนี้
mysql -h localhost -u root -p123456 dbsample < loaddata.sql
  • เมื่อพิ่มคำสั่งใน cmd เสร็จก็ enter ซะ จากนั้นรอ จนกว่าจะเสร็จ แค่เนี๋ยง่ายมากๆ

เพิ่มเติม
  • ไฟล์ text data ที่จะนำเข้า record สุดท้าย จะมีบรรทัดว่างอีกหนึ่งบรรทัดนะพี่น้อง
  • จากภาพ text file จะเห็นว่า มีบรรทัดที่ 4 ที่เป็นบรรทัดสุดท้ายจริงๆ อ่ะ
  • ถ้าเรา export จาก access มันจะ enter ลง 1 บรรทัด ให้อัตโนมัติ อยุ่แล้ว

อ้างอิง

No comments:

Post a Comment

Popular Posts