SQL - Eliminar grupos de tablas en sql

 
Vista:

Eliminar grupos de tablas en sql

Publicado por jUAN.ICM (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
Val: 135
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Eliminar grupos de tablas en sql

Publicado por xve (284 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 (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
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Eliminar grupos de tablas en sql

Publicado por Isaias (1921 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
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Eliminar grupos de tablas en sql

Publicado por leonardo_josue (1173 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
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Eliminar grupos de tablas en sql

Publicado por Isaias (1921 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

Eliminar grupos de tablas en sql

Publicado por Ricardo (2 intervenciones) el 14/05/2019 13:02:52
Buen día, disculpa no manejo bien lo del schema y en que parte del scrip que colocaste debería ir 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
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Eliminar grupos de tablas en sql

Publicado por Isaias (1921 intervenciones) el 14/05/2019 16:38:19
1
drop table myschema.mytabla

Comúnmente el esquema default es DBO, pero podrías tener otro
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 Luis (2 intervenciones) el 17/05/2019 04:03:00
Gracias.

Mira asi quedo

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, 6) = 'TmpGen'
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 dbo.' + @MyTable
  EXECUTE MASTER.DBO.sp_EXECUTESQL @SQLString
  DELETE #tablas WHERE table_name = @MyTable
  CONTINUE
 END

Pero tengo error como si faltara permisos pero ingrese a la bdd como super usuario con "sa", las tablas si existen

(0 filas afectadas)
Mens. 3701, Nivel 11, Estado 5, Línea 1
No se puede quitar el tabla 'dbo.TmpGenNenCaja080520190756533' porque no existe o el usuario no tiene permiso.

(0 filas afectadas)
Mens. 3701, Nivel 11, Estado 5, Línea 1
No se puede quitar el tabla 'dbo.TmpGenNenCaja080520190756533' porque no existe o el usuario no tiene permiso.

(0 filas afectadas)
Mens. 3701, Nivel 11, Estado 5, Línea 1
No se puede quitar el tabla 'dbo.TmpGenNenCaja080520190756533' porque no existe o el usuario no tiene permiso.

(0 filas afectadas)
Mens. 3701, Nivel 11, Estado 5, Línea 1
No se puede quitar el tabla 'dbo.TmpGenNenCaja080520190756533' porque no existe o el usuario no tiene permiso.

No se si te ha sucedido?
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
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Eliminar grupos de tablas en sql

Publicado por Isaias (1921 intervenciones) el 17/05/2019 16:38:07
Si a esta tabla dbo.TmpGenNenCaja080520190756533 le das un DROP directamente desde la consola de administración, ¿que te manda?
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