Latest web development tutorials

ข้อมูลการส่งออก MySQL

MySQL คุณสามารถใช้ SELECT ... INTO OUTFILE งบการส่งออกข้อมูลไปยังแฟ้มข้อความที่เรียบง่าย


เลือกใช้ ... INTO งบ OUTFILE ข้อมูลการส่งออก

ตัวอย่างต่อไปนี้เราจะส่งออกข้อมูลไปยังตารางข้อมูล w3big_tbl ไฟล์ /tmp/tutorials.txt:

mysql> SELECT * FROM w3big_tbl 
    -> INTO OUTFILE '/tmp/tutorials.txt';

คุณสามารถตั้งค่ารูปแบบข้อมูลการส่งออกที่ระบุโดยตัวเลือกคำสั่งตัวอย่างต่อไปนี้จะถูกส่งออกในรูปแบบ CSV:

mysql> SELECT * FROM passwd INTO OUTFILE '/tmp/tutorials.txt'
    -> FIELDS TERMINATED BY ',' ENCLOSED BY '"'
    -> LINES TERMINATED BY '\r\n';

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

SELECT a,b,a+b INTO OUTFILE '/tmp/result.text'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM test_table;

SELECT ... ลงในคำสั่ง OUTFILE มีคุณสมบัติดังต่อไปนี้:

  • โหลดข้อมูล INFILE เลือก ... INTO OUTFILE เป็นงานที่ผกผันไวยากรณ์ SELECT เพื่อที่จะเขียนข้อมูลไปยังฐานข้อมูลในไฟล์เลือกใช้ ... INTO OUTFILE, อ่านไฟล์กลับเข้ามาในฐานข้อมูลการใช้งานโหลดข้อมูล INFILE
  • SELECT ... INTO OUTFILE 'file_name' รูปแบบของสาย SELECT สามารถเลือกเขียนแฟ้ม ไฟล์จะถูกสร้างขึ้นบนเซิร์ฟเวอร์โฮสต์ดังนั้นคุณต้องมีสิทธิ์ในการแฟ้มที่จะใช้รูปแบบนี้
  • เอาท์พุทไม่ได้เป็นไฟล์ที่มีอยู่แล้ว ไฟล์ป้องกันไม่ให้ข้อมูลจากการถูกดัดแปลง
  • คุณจำเป็นต้องมีเซิร์ฟเวอร์เข้าสู่ระบบบัญชีเพื่อดึงไฟล์ มิฉะนั้น SELECT ... INTO OUTFILE จะได้มีบทบาทใด ๆ
  • ในยูนิกซ์หลังจากที่ไฟล์จะถูกสร้างขึ้นเป็นสิทธิพิเศษที่สามารถอ่านได้เป็นเจ้าของโดยเซิร์ฟเวอร์ MySQL ซึ่งหมายความว่าแม้ว่าคุณจะสามารถอ่านไฟล์ แต่อาจไม่ถูกลบ

ข้อมูลที่ส่งออกเป็นตารางเดิม

mysqldump MySQL ถูกใช้เพื่อเปิดฐานข้อมูลยูทิลิตี้จะถูกเก็บไว้ ส่วนใหญ่จะสร้างสคริปต์ SQL ที่มีคำสั่งที่จะสร้างใหม่อีกครั้งฐานข้อมูลจากรอยขีดข่วนที่จำเป็น CREATE แทรกตารางและอื่น ๆ

ใช้ mysqldump การส่งออกข้อมูลต้องมีตัวเลือกที่จะ --tab ระบุไดเรกทอรีที่ระบุไว้ในไฟล์การส่งออกวัตถุที่จะต้องเขียน

ตัวอย่างต่อไปนี้จะส่งออก w3big_tbl ตารางข้อมูลไปยังไดเรกทอรี / tmp:

$ mysqldump -u root -p --no-create-info \
            --tab=/tmp w3big w3big_tbl
password ******

ข้อมูลการส่งออกในรูปแบบ SQL

ส่งออกข้อมูล SQL รูปแบบไฟล์ที่ระบุไว้ดังต่อไปนี้:

$ mysqldump -u root -p w3big w3big_tbl > dump.txt
password ******

ไฟล์เนื้อหาที่สร้างโดยคำสั่งดังกล่าวดังต่อไปนี้:

-- MySQL dump 8.23
--
-- Host: localhost    Database: w3big
---------------------------------------------------------
-- Server version       3.23.58

--
-- Table structure for table `w3big_tbl`
--

CREATE TABLE w3big_tbl (
  w3big_id int(11) NOT NULL auto_increment,
  w3big_title varchar(100) NOT NULL default '',
  w3big_author varchar(40) NOT NULL default '',
  submission_date date default NULL,
  PRIMARY KEY  (w3big_id),
  UNIQUE KEY AUTHOR_INDEX (w3big_author)
) TYPE=MyISAM;

--
-- Dumping data for table `w3big_tbl`
--

INSERT INTO w3big_tbl 
       VALUES (1,'Learn PHP','John Poul','2007-05-24');
INSERT INTO w3big_tbl 
       VALUES (2,'Learn MySQL','Abdul S','2007-05-24');
INSERT INTO w3big_tbl 
       VALUES (3,'JAVA Tutorial','Sanjay','2007-05-06');

หากคุณจำเป็นต้องส่งออกข้อมูลสำหรับฐานข้อมูลทั้งหมดคุณสามารถใช้คำสั่งต่อไปนี้:

$ mysqldump -u root -p w3big > database_dump.txt
password ******

หากคุณจำเป็นต้องสำรองฐานข้อมูลทั้งหมดที่คุณสามารถใช้คำสั่งต่อไปนี้:

$ mysqldump -u root -p --all-databases > database_dump.txt
password ******

--all ฐานข้อมูลตัวเลือกที่ถูกเพิ่มเข้ามาใน MySQL 3.23.12 หรือในภายหลัง

วิธีการนี้สามารถใช้ในการดำเนินกลยุทธ์การสำรองฐานข้อมูล


แผ่นข้อมูลและสำเนาของฐานข้อมูลไปยังโฮสต์อื่น

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

รันคำสั่งต่อไปนี้บนโฮสต์ต้นทางสำรองข้อมูลไปยังแฟ้ม dump.txt:

$ mysqldump -u root -p database_name table_name > dump.txt
password *****

ถ้าสำรองข้อมูลทั้งหมดของฐานข้อมูลที่คุณไม่จำเป็นต้องใช้ชื่อตารางที่เฉพาะเจาะจง

หากคุณจำเป็นต้องสำรองฐานข้อมูลลงในเซิร์ฟเวอร์ MySQL, คุณสามารถใช้คำสั่งต่อไปใช้คำสั่งต่อไปนี้คุณต้องให้แน่ใจว่าฐานข้อมูลที่ได้รับการสร้าง:

$ mysql -u root -p database_name < dump.txt
password *****
你也可以使用以下命令将导出的数据直接导入到远程的服务器上,但请确保两台服务器是相通的,是可以相互访问的:</p>
$ mysqldump -u root -p database_name \
       | mysql -h other-host.com database_name

คำสั่งดังกล่าวถูกนำมาใช้ในท่อเพื่อส่งออกข้อมูลลงในพื้นที่ห่างไกลที่ระบุ