sql >> Base de Datos >  >> RDS >> Mysql

¿Eliminar bases de datos MySQL que coincidan con algún comodín?

La idea básica es ejecutar "mostrar tablas" en su base de datos y usar los resultados para seleccionar las tablas que desea. No creo que MySQL te permita hacer nada con el conjunto de resultados de "mostrar tablas", pero probablemente esté equivocado.

Aquí hay una solución rápida y sucia usando el shell:

mysql -u your_user -D your_database_name -e "show tables" -s | 
  egrep "^Whatever_" | 
  xargs -I "@@" echo mysql -u your_user -D your_database_name -e "DROP TABLE @@"

Eso imprimirá todos los comandos de shell para eliminar las tablas que comienzan con "Lo que sea_". Si desea que ejecute esos comandos, elimine la palabra "eco".

EDITAR :¡Olvidé explicar lo anterior! No sé qué tan familiarizado está con las secuencias de comandos de shell, pero aquí va:

mysql -u your_user -D your_database_name -e "show tables" -s

imprime una lista de todas sus tablas, con el encabezado "Tables_in_your_database_name". La salida de eso se canaliza (el símbolo | significa "canalizado", como en transmisión) a través del siguiente comando:

egrep "^Whatever_"

busca cualquier línea que comience (que los símbolos ^ significan "seres con") la palabra "Lo que sea_" y solo las imprime. Finalmente, canalizamos esa lista de tablas "Lo que sea_*" a través del comando:

xargs -I "@@" echo mysql -u your_user -D your_database_name -e "DROP TABLE @@"

que toma cada línea en la lista de nombres de tabla y la inserta en lugar de "@@" en el comando

echo mysql -u your_user -D your_database_name -e "DROP TABLE @@"

Entonces, si tuviera un montón de tablas llamadas "Lo que sea_1", "Lo que sea_2", "Lo que sea_3", los comandos generados serían:

echo mysql -u your_user -D your_database_name -e "DROP TABLE Whatever_1"
echo mysql -u your_user -D your_database_name -e "DROP TABLE Whatever_2"
echo mysql -u your_user -D your_database_name -e "DROP TABLE Whatever_3"

Lo que generaría lo siguiente:

mysql -u your_user -D your_database_name -e "DROP TABLE Whatever_1"
mysql -u your_user -D your_database_name -e "DROP TABLE Whatever_2"
mysql -u your_user -D your_database_name -e "DROP TABLE Whatever_3"

Espero que haya sido suficiente detalle y que no esté golpeando a nadie en la cabeza con demasiada información. ¡Buena suerte y tenga cuidado al usar el comando "DROP TABLE"!