SQL - Eliminar grupos de tablas en sql

   
Vista:

Eliminar grupos de tablas en sql

Publicado por jUAN.ICM jmari.icm@gmail.com (2 intervenciones) el 10/12/2012 13:34:52
Necesitaría saber si hay forma de elilminar grupos de tablas que contenga determinada cadena en el nombre por ej.: aaaBalance, aaacuentas, aaagrupos (habría que borrar las tablas que contengan la string "aaa".

Caso de no existir esta posibilidad, si alguien me puede indicar como puedo comprobar la existencia de una tabla para proceder a su borrado (drop table si existe).

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Eliminar grupos de tablas en sql

Publicado por xve (238 intervenciones) el 10/12/2012 15:29:16
Hola Juan, que motor de base de datos estas utilizando?? mysql, sql server, postgresql, ...

Cuando dices que contenga el estring aaa, te refieres a que el nombre de la tabla contenga las letras aaa?

Si es así, y utilizas mysql, tienes toda la información en al base de datos information_schema... por ejemplo, para saber todas las tablas que tengan las letras aaa puedes hacer:

1
2
3
use information_schema;
 
DELETE FROM TABLES WHERE TABLE_NAME like '%aaa%';


Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Eliminar grupos de tablas en sql

Publicado por Juan.icm jmari.icm@gmail.com (2 intervenciones) el 10/12/2012 16:47:19
Hola.
Gracias por tu rápida respuesta.

Se me olvidó indicar que utilizo MS SQL server.

Se que la instrucción va en el sentido de la que me indicas. He sustituido el "delete" por el "drop" pero no hay manera de que me la reconozca..

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

Eliminar grupos de tablas en sql

Publicado por Isaias (690 intervenciones) el 10/12/2012 19:36:55
Tienes que hacerlo FORZOSAMENTE con un DROP, entonces, como no hay otro camino, debes construir tu drop en base a un WHILE, mas o menos asi


1
2
3
4
5
6
7
8
9
10
11
12
13
create table #tablas (table_name sysname)
insert into #tablas (table_name)
select name from sys.tables WHERE LEFT(name, 3) = 'aaa'
DECLARE @MyTable sysname
DECLARE @SQLString nvarchar(50)
WHILE EXISTS(SELECT Name FROM sys.tables)
 BEGIN
  SELECT TOP 1 @MyTable = table_name from #tablas
  SET @SQLString = 'DROP TABLE ' + @MyTable
  EXECUTE MASTER.DBO.sp_EXECUTESQL @SQLString
  DELETE #tablas WHERE table_name = @MyTable
  CONTINUE
 END
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Eliminar grupos de tablas en sql

Publicado por leonardo_josue (878 intervenciones) el 10/12/2012 19:40:06
Hola Juan.icm:

No es una buena idea ponerte a borrar objetos directamente de las tablas catálogo, es más, no estoy seguro si siquiera es posible hacerlo, podrías obtener los nombres de las tablas a borrar así:

1
SELECT  name  FROM sys.tables WHERE name LIKE '%aaa%';


Mucho ojo con considerar también el esquema al que pertenecen las tablas.

1
EDITO: ya Isaías te ahorró el trabajo de hacer el while...  jejejeje, saludos


Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Isaias

Eliminar grupos de tablas en sql

Publicado por Isaias (690 intervenciones) el 10/12/2012 23:38:57
Leo

Tienes toda la razón, NUNCA podrá borrar un objeto haciendo referencia a las ventanas del sistema.

Y gracias por la observacion, se me paso incluir el SCHEMA.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar