mysqldump – 只有导出结构没有自动增量

我有一个MySQL数据库,我试图find一种方法来导出其结构只有自动增量值。 mysqldump --no-data几乎可以完成这个工作,但是它保留了auto_increment的值。 有没有办法做到这一点,而不使用PHPMyAdmin(我知道它可以做到这一点)?

你可以这样做 :

 mysqldump -u root -p -h <db-host> --opt <db-name> -d --single-transaction | sed 's/ AUTO_INCREMENT=[0-9]*\b//' > <filename>.sql 

正如其他人所说,如果你想让sed正常工作,添加g (for g lobal replacement)这样的参数:

 mysqldump -u root -p -h <db-host> --opt <db-name> -d --single-transaction | sed 's/ AUTO_INCREMENT=[0-9]*\b//g' > <filename>.sql 

(这只有在安装了GUI工具时才有效: mysqldump --skip-auto-increment

JoDev的答案完全适用于我对sed正则expression式的小调整:

 mysqldump -d -h localhost -u<user> -p<password> <databaseName> | sed 's/ AUTO_INCREMENT=[0-9]*//g' > databaseStructure.sql 

它是–create-options,它包含在–opt中,默认情况下,它会生成AUTO_INCREMENT表定义。

如果你只想要基表,

 mysql -hlocalhost -uuser -ppass --skip-column-names --batch \ -e "select table_name from tables where table_type = 'BASE TABLE' and table_schema = 'schemaname'" INFORMATION_SCHEMA \ | xargs mysqldump -hlocalhost -uuser -ppass \ --no-data --skip-triggers --skip-opt --no-create-db \ schemaname 

如果你也想要视图,触发器和例程,

 mysqldump -hlocalhost -uuser -ppass \ --skip-opt --events --routines --no-data \ schemaname 

感谢这篇文章,我能够回答我的问题:

我怎样才能对我的数据库进行版本控制?

然后我创build了这个脚本: db_bkp.sh

 #!/bin/sh filename="db_structure.sql" backupfolder="/var/www/" fpath="$backupfolder/$filename" usr="DBUSER" pass="DBPASS" db="DBNAME" mysqldump --user=$usr --password=$pass --no-data $db | sed 's/ AUTO_INCREMENT=[0-9]*//g' > "$fpath" 

然后我把这个添加到crontab中:

 30 5 * * * sh /home/scripts/db_bkp.sh 

然后在我的回购中,我将结果db_structure.sql添加到git中,在推送更改之前,我总是检查是否有任何结构更改,我忘了在所有dbs上执行。

mysqldump -u [USER] -p [PASSWORD] -d –skip-opt –single-transaction [DB_SCHEMA]> [FILE.ESTENSIONE]