example - mysqldump-Exportar estructura solo sin autoincrement
mysqldump table (5)
Tengo una base de datos MySQL y estoy tratando de encontrar una forma de exportar su estructura solamente, sin los valores de incremento automático. mysqldump --no-data
casi haría el trabajo, pero mantiene los valores auto_increment. ¿Hay alguna forma de hacerlo sin usar PHPMyAdmin (que sé que puede hacerlo)?
Es --create-options, que se incluye con --opt, por defecto, que genera las definiciones de la tabla AUTO_INCREMENT.
Si solo quieres las tablas base,
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
Si quieres vistas, desencadenadores y rutinas también,
mysqldump -hlocalhost -uuser -ppass /
--skip-opt --events --routines --no-data /
schemaname
Gracias a esta publicación, pude responder mi pregunta:
¿Cómo puedo hacer control de versiones en mi db?
Entonces acabo de crear este script: 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"
Luego agregué esto a crontab:
30 5 * * * sh /home/scripts/db_bkp.sh
Luego, en mi repositorio, agregué el resultado, db_structure.sql
a git y antes de presionar los cambios en prod, siempre compruebo si hay algún cambio estructural que olvidé hacer en todos los dbs.
La respuesta de JoDev funcionó perfectamente para mí con un pequeño ajuste a la expresión regular sed:
mysqldump -d -h localhost -u<user> -p<password> <databaseName> | sed ''s/ AUTO_INCREMENT=[0-9]*//g'' > databaseStructure.sql
Puedes hacerlo :
mysqldump -u root -p -h <db-host> --opt <db-name> -d --single-transaction | sed ''s/ AUTO_INCREMENT=[0-9]*/b//'' > <filename>.sql
Como lo mencionaron otros, si desea que sed
funcione correctamente, agregue el parámetro g
(para el reemplazo global) como este:
mysqldump -u root -p -h <db-host> --opt <db-name> -d --single-transaction | sed ''s/ AUTO_INCREMENT=[0-9]*/b//g'' > <filename>.sql
(Esto solo funciona si tiene instaladas las herramientas GUI: mysqldump --skip-auto-increment
)
mysqldump -u [USER] -p [PASSWORD] -d --skip-opt --single-transaction [DB_SCHEMA]> [FILE.ESTENSIONE]