首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysqldump -仅导出结构,不带自动增量

mysqldump -仅导出结构,不带自动增量
EN

Stack Overflow用户
提问于 2013-03-27 18:20:07
回答 5查看 46.7K关注 0票数 92

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

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-03-27 18:22:21

您可以这样做:

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

正如其他人所提到的,如果您希望sed正常工作,请添加g (用于g全局替换)参数,如下所示:

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

(只有在安装了图形用户界面工具的情况下才有效:mysqldump --skip-auto-increment)

新的更新感谢评论。

\b是无用的,有时会中断命令。有关说明,请参阅此SO topic。因此,优化后的答案是:

代码语言:javascript
复制
mysqldump -u root -p -h <db-host> --opt <db-name> -d --single-transaction | sed 's/ AUTO_INCREMENT=[0-9]*//g' > <filename>.sql
票数 76
EN

Stack Overflow用户

发布于 2014-10-13 02:09:30

JoDev的答案对我来说非常有效,只是对sed正则表达式做了一点小调整:

代码语言:javascript
复制
mysqldump -d -h localhost -u<user> -p<password> <databaseName> | sed 's/ AUTO_INCREMENT=[0-9]*//g' > databaseStructure.sql
票数 54
EN

Stack Overflow用户

发布于 2014-07-09 06:09:49

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

如果您只想要基表,

代码语言:javascript
复制
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

如果您还需要视图、触发器和例程,

代码语言:javascript
复制
mysqldump -hlocalhost -uuser -ppass \
    --skip-opt --events --routines --no-data \
    schemaname
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15656463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档