首页 > 数据库 > MySQL > mysqldump的一些记载
Mysqldump工具用于将mysql server中的数据以query形式导出成文本文件,虽然和oracle的export import工具一样可以作为一种逻辑备份的工具,不过mysqldump更应该作为一种query生成工具更合适,mysqldump工具生成的文件包含全部的所需要的sql命令。并且转化为ddl语法和insert语句。
[root@Analyser ~]# mysqldump -p cobra userinfo>test03.txt
Enter password:
还可以和exp和expdp中的query一样截取部分数据
[root@Analyser ~]#mysqldump –p –where=”id=689” cobra userinfo>test04.txt
Enter password:
这里截取部分导出的文件看看
DROP TABLE IF EXISTS `userinfo`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `userinfo` (
`ID` bigint(22) DEFAULT NULL,
`USERNAME` varchar(64) DEFAULT NULL,
`PWDHASH` varchar(64) DEFAULT NULL,
`USEALIAS` bigint(22) DEFAULT NULL,
`ALIAS` varchar(255) DEFAULT NULL,
`REALNAME` varchar(32) DEFAULT NULL,
`INUSE` bigint(22) DEFAULT NULL,
`F_BRANCH_ID` bigint(22) DEFAULT NULL,
`MOBILEPHONE` varchar(32) DEFAULT NULL,
`TELEPHONE` varchar(32) DEFAULT NULL,
`EMAIL` varchar(64) DEFAULT NULL,
`LICENSECODE` varchar(18) DEFAULT NULL,
`ADDRESS` varchar(255) DEFAULT NULL,
`POSTCODE` varchar(6) DEFAULT NULL,
`GENDER` varchar(1) DEFAULT NULL,
`F_CUSTOMER_ID` bigint(22) DEFAULT NULL,
UNIQUE KEY `SYS_C009326` (`ID`),
UNIQUE KEY `USERINFO_PK` (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `userinfo`
--
-- WHERE: id=689
LOCK TABLES `userinfo` WRITE;
/*!40000 ALTER TABLE `userinfo` DISABLE KEYS */;
INSERT INTO `userinfo` VALUES (689,'demo','ed0de7252acf2980e677bacab01bde25',0,NULL,'婕旂ず',1,41,NULL,NULL,'demo@test.cn',NULL,NULL,NULL,'M',NULL);
/*!40000 ALTER TABLE `userinfo` ENABLE KEYS */;
UNLOCK TABLES;
第一行的drop table if exists语句,也就是保证再次导入到mysql数据库时候不会出错,首先检查表是否存在,如果存在就删除
也就是对应于option:—add-drop –table,默认情况下也是如此。
Option:--add-lock再次导入表到数据库时,会对表加锁,防止修改表中数据。
[root@Analyser ~]# mysqldump -p --where="id=689" --add-lock cobra userinfo>test05.txt
其中的文件中加了如下一行
LOCK TABLES `userinfo` WRITE;
/*!40000 ALTER TABLE `userinfo` DISABLE KEYS */;
INSERT INTO `userinfo` VALUES (689,'demo','ed0de7252acf2980e677bacab01bde25',0,NULL,'婕旂ず',1,41,NULL,NULL,'demo@test.cn',NULL,NULL,NULL,'M',NULL)
Option:-c会在导出的文件中insert语句中加上列的名字,当把数据导出导入另外数据库时使用,不过可以看见文本文件中已经有create table的ddl,这个列明是否存在多余了。
INSERT INTO `userinfo` (`ID`, `USERNAME`, `PWDHASH`, `USEALIAS`, `ALIAS`, `REALNAME`, `INUSE`, `F_BRANCH_ID`, `MOBILEPHONE`, `TELEPHONE`, `EMAIL`, `LICENSECODE`, `ADDRESS`, `POSTCODE`, `GENDER`, `F_CUSTOMER_ID`) VALUES (689,'demo','ed0de7252acf2980e677bacab01bde25',0,NULL,'婕旂ず',1,41,NULL,NULL,'demo@test.cn',NULL,NULL,NULL,'M',NULL)
--delayed-insert在insert命令中加入delay选项
INSERT DELAYED INTO `userinfo` VALUES (689,'demo','ed0de7252acf2980e677bacab01bde25',0,NULL,'婕旂ず',1,41,NULL,NULL,'demo@test.cn',NULL,NULL,NULL,'M',NULL);
-F or –flush-logs在执行导出之前会强制刷新mysql服务器的log
-f or –force有错误依然继续导出
--full会把附加信息也加入到create table的语句中
-l or –lock-tables导出表的时候服务器会给表加锁
-t or –no-create-info 文本文件中不包含create table的ddl语句,用于只要数据而不需要ddl语句
-d or –no-data 文本文件中不创建insert语句
-T path or –tab=path 会创建两个文件,一个包含ddl语句另一个文件包含数据文件
-q or –quick 不会把整个导出的内容读入内存再执行导出,而是在读到的时候就写入导文件中。
[@more@]来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25362835/viewspace-1058377/ ,如需转载,请注明出处,否则将追究法律责任。