【问题标题】:How to take backup of a single table in a MySQL database?如何备份 MySQL 数据库中的单个表?
【发布时间】:2011-10-04 16:54:39
【问题描述】:

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

【问题讨论】:

    标签: mysql backup restore


    【解决方案1】:

    mysqldump 可以带一个 tbl_name 参数,因此它只备份给定的表。

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

    【讨论】:

      【解决方案2】:

      从 .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 &lt; /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
      

      【讨论】:

      • SQL 通常可以很好地压缩——您可以通过 gzip 将上面的命令通过管道传输,生成的文件会小得多:mysqldump db_name table_name | gzip &gt; table_name.sql.gz 恢复:gunzip &lt; table_name.sql.gz | mysql -u username -p db_name
      • 如果你想在命令行中包含密码怎么办?所以你已经在使用 -pPASSWORD
      【解决方案3】:

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

      mysql -u root -p databasename < dumpfileFOurTableInOneDump.sql 
      

      【讨论】:

      • 不幸的是,Mysql Workbench 存在一些转义问题,可能导致导出无用的无效数据...
      【解决方案4】:

      试试

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

      【讨论】:

      • 这对于将数据库转储到单独的表查询中很方便 - 我可以知道这些选项的具体作用吗?
      • 你好,-AN(--no-auto-rehash, -A | --skip-column-names, -N 不要在结果中写入列名。) -e(--execute=statement, -e statement | 执行语句并退出。默认输出格式与使用--batch 生成的格式相同。) fuente: @ 987654321@
      【解决方案5】:

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

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

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

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

      【讨论】:

        【解决方案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表的dump信息:

        --

        -- 表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;
        
        --
        

        【讨论】:

          【解决方案7】:

          您可以使用以下代码:

          1. 对于单表结构单独备份

          -

          mysqldump -d <database name> <tablename> > <filename.sql>
          
          1. 对于带数据的单表结构

          -

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

          希望它会有所帮助。

          【讨论】:

            【解决方案8】:

            您可以在命令行中使用mysqldump

            mysqldump -u username -p password dbname tablename &gt; "path where you want to dump"

            您也可以使用 MySQL Workbench:

            转到左侧 > 数据导出 > 选择架构 > 选择表并单击导出

            【讨论】:

            • 只是一个小信息,省略-p和密码之间的空格 --> -ppassword,但它不安全
            【解决方案9】:

            只需使用mysqldump -u root database table 或者如果使用密码mysqldump -u root -p pass database table

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2019-05-06
              • 2011-10-31
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2019-02-08
              相关资源
              最近更新 更多