¿Cómo puedo descartar todas las tablas cuyos nombres comienzan con una cadena dada?
Creo que esto se puede hacer con un poco de SQL dinámico y las INFORMATION_SCHEMA
tablas.
sql
sql-server
dynamic-sql
Blorgbeard está fuera
fuente
fuente
close cmds; deallocate cmds
.Esto generará un script.
Agregar una cláusula para verificar la existencia de la tabla antes de eliminar:
fuente
WHERE TABLE_NAME LIKE 'em\_%' ESCAPE '\';
Esto le dará las tablas en orden de clave externa y evitará que se caigan algunas de las tablas creadas por SQL Server. El
t.Ordinal
valor dividirá las tablas en capas de dependencia.fuente
En Oracle XE esto funciona:
O si desea eliminar las restricciones y liberar espacio también, use esto:
Lo que generará un montón de
DROP TABLE cascade constraints PURGE
declaraciones ...Para
VIEWS
usar esto:fuente
Vi esta publicación cuando estaba buscando la declaración mysql para descartar todas las tablas de WordPress basadas en @Xenph Yan. Esto es lo que hice eventualmente:
esto le dará el conjunto de consultas para todas las tablas que comienza con wp_
fuente
Aquí está mi solución:
Y, por supuesto, debe reemplazarlo
TABLE_PREFIX_GOES_HERE
con su prefijo.fuente
Editar:
sp_MSforeachtable no está documentado, por lo tanto, no es adecuado para la producción porque su comportamiento puede variar según la versión de MS_SQL.
fuente
fuente
La respuesta de Xenph Yan fue mucho más limpia que la mía, pero aquí está la mía de todos modos .
Simplemente cambie
tableName
a los caracteres con los que desea buscar.fuente
Esto funcionó para mí.
fuente
- Test es el nombre de la tabla
fuente
fuente
Sospecho que tuve que hacer una ligera derivación en la respuesta de Xenph Yan porque tenía tablas que no estaban en el esquema predeterminado.
fuente
En el caso de tablas temporales, es posible que desee probar
fuente