如何在MySQL数据库中备份单个表?


441

默认情况下,mysqldump备份整个数据库。我需要在MySQL中备份单个表。可能吗?如何还原?

Answers:


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 2014年

如果要在命令行中包含密码怎么办?所以您已经在使用-pPASSWORD
Freedo

23

mysqldump可以使用tbl_name参数,因此它仅备份给定的表。

mysqldump -u -p yourdb yourtable > c:\backups\backup.sql

15

尝试

for line in $(mysql -u... -p... -AN -e "show tables from NameDataBase");
do 
mysqldump -u... -p.... NameDataBase $line > $line.sql ; 
done
  • $ line内容名称表;)

1
这对于将数据库转储到单独的表查询中非常方便-我可以确切知道这些选项的作用吗?
xiankai

您好,-AN(-no-auto-rehash,-A | --skip-column-names,-N不要在结果中写入列名。)-e(-execute = statement,-e语句|执行语句和退出默认输出格式是这样,与--batch生产)丰:。dev.mysql.com/doc/refman/5.6/en/mysql-command-options.html
罗宾Gomez的

12

我们可以在任何给定条件下对任何特定表进行mysql转储,如下所示

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

如果我们要在表上添加特定的where条件,则可以使用以下命令

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

8

您可以轻松地使用MYSQLWorkbench tool,单独或一组表转储所选表,然后按以下顺序导入它:按如下方式导入:如果您正在本地运行主机信息,您还可以通过在-u之后添加-h IP.ADDRESS.NUMBER 来添加主机信息。用户名

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将包含dropcr表,create table以及sugarcrm数据库中所有表的insert命令。以下是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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.