/ 中存储网

使用MySQLdump时去除auto_increment=*的方法

2014-07-13 16:32:27 来源:中存储网
MySQL 备份或者数据库架构的汇出, 都会使用 mysqldump 来汇, 备份资料/还原都很方便, 但是汇出数据库架构这方面, 对于 AUTO_INCREMENT 的处理就有点小麻烦了.
MySQL 汇出 DB Schema 的参数:(不汇出资料)
mysqldump -u root -d DB_NAME # "-d"
就不会将资料一起汇出来

Database Schema 汇出范例
因为 DB Schema 汇出的动作, 若有资料, 且资料内容有自动累加值(AUTO_INCREMENT)的字段, 汇出的内容在 Create Table 的结尾, 会纪录下一笔新资料要从第几个序号开始, 所以不会从 1 号开始(若 AUTO_INCREMENT=9, 新增那笔就会由 9 开始).
Schema 汇出的范例:
CREATE TABLE `table_name` (
  `id` bigint(20) unsigned NOT NULL auto_increment,
  PRIMARY KEY  (`id`),
) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;

mysqldump 移除 AUTO_INCREMENT=* 字串
通常都是 mysqldump -u root -d DB_NAME 汇出后, 再手动将 AUTO_INCREMENT=* 移除.
man mysqldump 想要找汇出的内容中, 是否能 不要包含 AUTO_INCREMENT 的资讯, 找不到可以用的参数, 只好于汇出时用 sed 来取代囉~
下面这两个都是将汇出内容的 AUTO_INCREMENT=* 移除的指令, 看喜欢用哪个囉~(我习惯用第一个)
mysqldump -u root -d DB_NAME | sed 's/AUTO_INCREMENT=[0-9]*s//g'
mysqldump -u root -d DB_NAME --compact | sed 's/(.*ENGINE.*AUTO_INCREMENT=).*/10;/g'