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]