mysqldump的一些記載

dotaddjj發表於2012-05-30

Mysqldump工具用於將mysql server中的資料以query形式匯出成文字檔案,雖然和oracleexport import工具一樣可以作為一種邏輯備份的工具,不過mysqldump更應該作為一種query生成工具更合適,mysqldump工具生成的檔案包含全部的所需要的sql命令。並且轉化為ddl語法和insert語句。

[root@Analyser ~]# mysqldump -p cobra userinfo>test03.txt

Enter password:

還可以和expexpdp中的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 tableddl,這個列明是否存在多餘了。

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-insertinsert命令中加入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 tableddl語句,用於只要資料而不需要ddl語句

-d or –no-data 文字檔案中不建立insert語句

-T path or –tab=path 會建立兩個檔案,一個包含ddl語句另一個檔案包含資料檔案

-q or –quick 不會把整個匯出的內容讀入記憶體再執行匯出,而是在讀到的時候就寫入導檔案中。

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25362835/viewspace-1058377/,如需轉載,請註明出處,否則將追究法律責任。

相關文章