MariaDB - วิธีการโหลดข้อมูลสำรอง

ในบทนี้เราจะเรียนรู้เกี่ยวกับวิธีการโหลดข้อมูลสำรองต่างๆ การกู้คืนฐานข้อมูลจากข้อมูลสำรองเป็นกระบวนการที่ง่ายและบางครั้งก็ใช้เวลานานมาก

มีสามตัวเลือกในการโหลดข้อมูล: คำสั่ง LOAD DATA, mysqlimport และ mysqldump restore แบบธรรมดา

การใช้ LOAD DATA

คำสั่ง LOAD DATA ทำหน้าที่เป็นตัวโหลดจำนวนมาก ตรวจสอบตัวอย่างการใช้งานที่โหลดไฟล์ข้อความ -

mysql> LOAD DATA LOCAL INFILE 'products_copy.txt' INTO TABLE empty_tbl;

สังเกตคุณสมบัติดังต่อไปนี้ของคำสั่ง LOAD DATA -

  • ใช้คีย์เวิร์ด LOCAL เพื่อป้องกันไม่ให้ MariaDB ทำการค้นหาโฮสต์ในเชิงลึกและใช้เส้นทางที่เฉพาะเจาะจงมาก

  • คำสั่งจะถือว่ารูปแบบประกอบด้วยบรรทัดที่สิ้นสุดโดย linefeeds (บรรทัดใหม่) และค่าข้อมูลที่คั่นด้วยแท็บ

  • ใช้คำสั่ง FIELDS เพื่อระบุการจัดรูปแบบของเขตข้อมูลบนบรรทัดอย่างชัดเจน ใช้ประโยค LINES เพื่อระบุการสิ้นสุดบรรทัด ดูตัวอย่างด้านล่าง

mysql> LOAD DATA LOCAL INFILE 'products_copy.txt' INTO TABLE empty_tbl
   FIELDS TERMINATED BY '|'
   LINES TERMINATED BY '\n';
  • คำสั่งถือว่าคอลัมน์ภายใน datafile ใช้ลำดับเดียวกันของตาราง หากคุณต้องการตั้งค่าลำดับอื่นคุณสามารถโหลดไฟล์ได้ดังนี้ -

mysql> LOAD DATA LOCAL INFILE 'products_copy.txt' INTO TABLE empty_tbl (c, b, a);

ใช้ MYSQLIMPORT

เครื่องมือ mysqlimport ทำหน้าที่เป็น LOAD DATA wrapper ซึ่งอนุญาตให้ดำเนินการเดียวกันจากบรรทัดคำสั่ง

โหลดข้อมูลดังนี้ -

$ mysqlimport -u root -p --local database_name source_file.txt

ระบุการจัดรูปแบบดังนี้ -

$ mysqlimport -u root -p --local --fields-terminated-by="|" \
   --lines-terminated-by="\n" database_name source_file.txt

ใช้ --columns ตัวเลือกในการระบุลำดับคอลัมน์ -

$ mysqlimport -u root -p --local --columns=c,b,a \
   database_name source_file.txt

ใช้ MYSQLDUMP

คืนค่าด้วย mysqldump ต้องการคำสั่งง่ายๆนี้สำหรับการโหลดไฟล์ดัมพ์กลับไปที่โฮสต์ -

shell> mysql database_name < source_file.sql

ตัวละครพิเศษและใบเสนอราคา

ในคำสั่ง LOAD DATA เครื่องหมายคำพูดและอักขระพิเศษอาจตีความไม่ถูกต้อง คำสั่งจะถือว่าค่าที่ไม่ได้ใส่เครื่องหมายคำพูดและถือว่าแบ็กสแลชเป็นอักขระหลีก ใช้คำสั่ง FIELDS เพื่อระบุการจัดรูปแบบ ชี้ไปที่เครื่องหมายคำพูดที่มี“ ENCLOSED BY” ซึ่งทำให้เกิดการตัดเครื่องหมายคำพูดออกจากค่าข้อมูล เปลี่ยน Escape ด้วย“ ESCAPED BY”