วิธีการสำรองข้อมูลของตารางเดียวในฐานข้อมูล MySQL?


441

โดยค่าเริ่มต้นmysqldumpจะทำการสำรองข้อมูลของฐานข้อมูลทั้งหมด ฉันต้องการสำรองข้อมูลตารางเดียวใน MySQL เป็นไปได้ไหม? ฉันจะเรียกคืนได้อย่างไร

คำตอบ:


838

ดัมพ์และเรียกคืนตารางเดียวจาก. sql

เท

mysqldump db_name table_name > table_name.sql

ดัมพ์จากฐานข้อมูลรีโมต

mysqldump -u <db_username> -h <db_host> -p db_name table_name > table_name.sql

สำหรับการอ้างอิงเพิ่มเติม:

http://www.abbeyworkshop.com/howto/lamp/MySQL_Export_Backup/index.html

ฟื้นฟู

mysql -u <user_name> -p db_name
mysql> source <full_path>/table_name.sql

หรือในหนึ่งบรรทัด

mysql -u username -p db_name < /path/to/table_name.sql


ดัมพ์และเรียกคืนตารางเดียวจากรูปแบบการบีบอัด (.sql.gz)

เครดิต: John McGrath

เท

mysqldump db_name table_name | gzip > table_name.sql.gz

ฟื้นฟู

gunzip < table_name.sql.gz | mysql -u username -p db_name


13
SQL มักบีบอัดได้ดี - คุณสามารถไพพ์คำสั่งด้านบนผ่าน gzip และไฟล์ผลลัพธ์จะเล็กกว่านี้มาก: mysqldump db_name table_name | gzip > table_name.sql.gz เพื่อกู้คืน: gunzip < table_name.sql.gz | mysql -u username -p db_name
John McGrath

ถ้าคุณต้องการที่จะรวมรหัสผ่านในบรรทัดคำสั่ง? ดังนั้นคุณจึงใช้ -pPASSWORD อยู่แล้ว
Freedo


15

ลอง

for line in $(mysql -u... -p... -AN -e "show tables from NameDataBase");
do 
mysqldump -u... -p.... NameDataBase $line > $line.sql ; 
done
  • $ cotent ชื่อตารางตาราง;)

1
สิ่งนี้มีประโยชน์สำหรับการทิ้งฐานข้อมูลลงในแบบสอบถามแบบแยกตาราง - ฉันจะรู้ได้อย่างไรว่ามีตัวเลือกอะไรบ้าง?
xiankai

สวัสดี, -AN (- no-auto-rehash, -A | --skip-column-names, -Nอย่าเขียนชื่อคอลัมน์ในผลลัพธ์) -e (- execute = คำสั่ง, คำสั่ง-eดำเนินการ คำสั่งและออกรูปแบบผลลัพธ์เริ่มต้นเป็นเช่นเดียวกับที่ผลิตด้วย --batch.) fuente: dev.mysql.com/doc/refman/5.6/en/mysql-command-options.html
Robin Gomez

12

เราสามารถใช้ mysql dump ของตารางใดก็ได้โดยมีเงื่อนไขตามที่กำหนดไว้ด้านล่าง

mysqldump -uusername -p -hhost databasename tablename --skip-lock-tables

หากเราต้องการเพิ่มเงื่อนไขเฉพาะบนตารางจากนั้นเราสามารถใช้คำสั่งต่อไปนี้

mysqldump -uusername -p -hhost databasename tablename --where="date=20140501" --skip-lock-tables

8

คุณสามารถใช้เพื่อถ่ายโอนข้อมูลตารางที่เลือกโดยใช้MYSQLWorkbench toolทีละรายการหรือกลุ่มของตารางที่หนึ่งดัมพ์แล้วนำเข้าดังต่อไปนี้: นอกจากนี้คุณยังสามารถเพิ่มข้อมูลโฮสต์ได้หากคุณกำลังเรียกใช้ข้อมูลในพื้นที่ของคุณโดยเพิ่ม-h IP.ADDRESS.NUMBER after-u ชื่อผู้ใช้

mysql -u root -p databasename < dumpfileFOurTableInOneDump.sql 

น่าเสียดายที่ Mysql Workbench มีปัญหาในการหลบหนีซึ่งอาจนำไปสู่การส่งออกข้อมูลที่ไม่ถูกต้องซึ่งไร้ประโยชน์ ...
barell

6

คุณสามารถใช้รหัสนี้:

ตัวอย่างนี้ใช้การสำรองข้อมูลของฐานข้อมูล sugarcrm และดัมพ์เอาต์พุตไปยัง sugarcrm.sql

# mysqldump -u root -ptmppassword sugarcrm > sugarcrm.sql

# mysqldump -u root -p[root_password] [database_name] > dumpfilename.sql

sugarcrm.sql จะมีตารางดร็อปสร้างตารางและคำสั่งแทรกสำหรับตารางทั้งหมดในฐานข้อมูล sugarcrm ต่อไปนี้เป็นเอาต์พุตบางส่วนของ sugarcrm.sql ซึ่งแสดงข้อมูลดัมพ์ของตาราง accounts_contacts:

-

- โครงสร้างตารางสำหรับตาราง accounts_contacts

DROP TABLE IF EXISTS `accounts_contacts`;
SET @saved_cs_client = @@character_set_client;
SET character_set_client = utf8;
CREATE TABLE `accounts_contacts` (
`id` varchar(36) NOT NULL,
`contact_id` varchar(36) default NULL,
`account_id` varchar(36) default NULL,
`date_modified` datetime default NULL,
`deleted` tinyint(1) NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `idx_account_contact` (`account_id`,`contact_id`),
KEY `idx_contid_del_accid` (`contact_id`,`deleted`,`account_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
SET character_set_client = @saved_cs_client;

--

5

คุณสามารถใช้รหัสด้านล่าง:

  1. สำหรับโครงสร้างตารางเดี่ยวสำรองอย่างเดียว

-

mysqldump -d <database name> <tablename> > <filename.sql>
  1. สำหรับโครงสร้างตารางเดี่ยวพร้อมข้อมูล

-

mysqldump <database name> <tablename> > <filename.sql>

หวังว่ามันจะช่วย


5

คุณสามารถใช้mysqldumpจากบรรทัดคำสั่ง:

mysqldump -u username -p password dbname tablename > "path where you want to dump"

คุณยังสามารถใช้ MySQL Workbench:

ไปทางซ้าย> ส่งออกข้อมูล> เลือกสคีมา> เลือกตารางและคลิกที่ส่งออก


เพียงข้อมูลขนาดเล็กเว้นช่องว่างระหว่าง -p และรหัสผ่าน -> -ppassword แต่ไม่ปลอดภัย
Agung Sagita
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.