Necesito hacer un volcado de una base de datos que contiene 50 tablas impares de las cuales quiero excluir aproximadamente 15 impares que tienen prefijo exam_
Lo intenté mysqldump --ignore-table=dbname.exam_*
e incluso lo intenté --ignore-table=dbname.exam_%
No funcionó como se esperaba. Tuve que usar --ignore-table
varias veces.
Editar: He visto algunos scripts de shell que enumeran tables not like tablename_%
y se lo pasan mysqldump
.
Sin embargo, me gustaría saber si hay una opción en mysqldump o mysql, como tal para hacer lo mismo sin tener que escribirlo.
Editar-agregar: Eventualmente usé un script para volcar DB excluyendo tablas, usando ignore-table=
varias veces.
TABLES=`mysql --skip-column-names [DB-NAME] -e 'show tables' | grep -v 'exam_'`
mysqldump [DB-NAME] $TABLES > mysqldump.sql
Respuestas:
No, no hay una opción como esa en el
mysqldump
comando, como dicen los documentos :fuente
mysqldump --all-databases
solo para ver si se produce un error o simplemente salta al siguiente dDB ...Puede obtener los nombres de tabla que desea de mysql y luego usarlos para construir sus parámetros de volcado de mysql.
En el ejemplo a continuación, simplemente reemplace "algún prefijo" con su prefijo (por ejemplo, "examen_").
La
SHOW TABLES
consulta se puede modificar para buscar otros conjuntos de tablas. O podría usar una consulta en laINFORMATION_SCHEMA
tabla para usar aún más criterios.Esto se creó con la ayuda de esta respuesta sobre cómo obtener "todas las tablas con exclusión en bash": https://stackoverflow.com/a/9232076/631764
y esta respuesta sobre omitir tablas con algo de bash usado: https://stackoverflow.com/a/425172/631764
fuente
Creo que usar el
information_schema
es una buena ruta para tomar esto.fuente