ITPub博客

首页 > 数据库 > MySQL > mysqldump的一些记载

mysqldump的一些记载

原创 MySQL 作者:dotaddjj 时间:2012-05-30 14:51:54 0 删除 编辑

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/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 二十三四的我们
请登录后发表评论 登录
全部评论
  • 博文量
    220
  • 访问量
    1662971