mysqldmp 参数之--skip-opt 与--opt

1、首先我们通过mysqldump 的help 帮助我们了解一下两个参数的定义是什么

  --opt              

 Same as --add-drop-table, --add-locks, --create-options,   --quick, --extended-insert, --lock-tables, --set-charset, and --disable-keys. Enabled by default, disable with

 --skip-opt          

Disable --opt. Disables --add-drop-table, --add-locks,  --create-options, --quick, --extended-insert,  --lock-tables, --set-charset, and --disable-keys.

 通过上面的意思,我们可以知道上面两个的表达的是   --opt    打开这些选项, --skip-opt   表达的是关闭这些选项,下面我们通过一些实验了解一些意义 


2 实验 证明结果 

创建表 :

CREATE TABLE myisam (
id int(11) NOT NULL auto_increment,
name varchar(50) default NULL,
post text,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


CREATE TABLE innodb (
id int(11) NOT NULL auto_increment,
name varchar(50) default NULL,
post text,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


1、创建了一个innodb表,一个myisam 表

2 、两个表都用了 auto_increment


[root@dg ~]# mysqldump -uroot -pmysql  --database test     --opt 
Warning: Using a password on the command line interface can be insecure.
Warning: Using unique option prefix database instead of databases is deprecated and will be removed in a future release. Please use the full name instead.
-- MySQL dump 10.13  Distrib 5.6.27, for Linux (x86_64)

-- Current Database: `test`
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `test` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `test`;
-- Table structure for table `innodb`
DROP TABLE IF EXISTS `innodb`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `innodb` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) DEFAULT NULL,
  `post` text,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

-- Dumping data for table `innodb`
LOCK TABLES `innodb` WRITE;
/*!40000 ALTER TABLE `innodb` DISABLE KEYS */;
INSERT INTO `innodb` VALUES (1,'a','aaaaaaaaaaaaaaaaaaaaaaaaaa'),(2,'a','aaaaaaaaaaaaaaaaaaaaaaaaaa'),(3,'a','aaaaaaaaaaaaaaaaaaaaaaaaaa');
/*!40000 ALTER TABLE `innodb` ENABLE KEYS */;
UNLOCK TABLES;

-- Table structure for table `myisam`
DROP TABLE IF EXISTS `myisam`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `myisam` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) DEFAULT NULL,
  `post` text,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

-- Dumping data for table `myisam`
LOCK TABLES `myisam` WRITE;
/*!40000 ALTER TABLE `myisam` DISABLE KEYS */;
/*!40000 ALTER TABLE `myisam` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

[root@dg ~]# mysqldump -uroot -pmysql  --database test   --skip-opt 
Warning: Using a password on the command line interface can be insecure.
Warning: Using unique option prefix database instead of databases is deprecated and will be removed in a future release. Please use the full name instead.
-- MySQL dump 10.13  Distrib 5.6.27, for Linux (x86_64)
-- Current Database: `test`
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `test` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `test`;

-- Table structure for table `innodb`

/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `innodb` (
  `id` int(11) NOT NULL,
  `name` varchar(50) DEFAULT NULL,
  `post` text,
  PRIMARY KEY (`id`)
);
/*!40101 SET character_set_client = @saved_cs_client */;

-- Dumping data for table `innodb`

INSERT INTO `innodb` VALUES (1,'a','aaaaaaaaaaaaaaaaaaaaaaaaaa');
INSERT INTO `innodb` VALUES (2,'a','aaaaaaaaaaaaaaaaaaaaaaaaaa');
INSERT INTO `innodb` VALUES (3,'a','aaaaaaaaaaaaaaaaaaaaaaaaaa');

-- Table structure for table `myisam`

/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `myisam` (
  `id` int(11) NOT NULL,
  `name` varchar(50) DEFAULT NULL,
  `post` text,
  PRIMARY KEY (`id`)
);
/*!40101 SET character_set_client = @saved_cs_client */;


结论:

通过对比两个dump,可以得出结论如下:

1、--opt 在创建表结构之前 会有 DROP TABLE IF EXISTS 

2、原表在创建的时候指定了AUTO_INCREMENT,在使用了--opt 仍然和建表时候一样存在参数,在使用参数--skip-opt的时候,忽略了此参数AUTO_INCREMENT

3 在使用参数--opt的时候,创建表的类型,字符集等等都是默认参数ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;,当使用了--skip-opt的时候,这些参数都给忽略了

4导出原表中的数据,--opt是一个insert多个value,在使用了--skip-opt的时候,是多个insert组成的;



  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值