Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Ayuda con BD y Borrado

Estas en el tema de Ayuda con BD y Borrado en el foro de SQL Server en Foros del Web. Saludos pues aqui nuevamente consultando, y esperando alguien me pueda orientar, bueno tengo una base en sql server 2000, con aproximadamente unas 300 tablas, lo ...
  #1 (permalink)  
Antiguo 30/11/2005, 08:55
 
Fecha de Ingreso: diciembre-2003
Mensajes: 595
Antigüedad: 20 años, 4 meses
Puntos: 1
Ayuda con BD y Borrado

Saludos pues aqui nuevamente consultando, y esperando alguien me pueda orientar, bueno tengo una base en sql server 2000, con aproximadamente unas 300 tablas, lo que necesito es decir o hacer que me elimine todos los datos de esas tablas que solo me deje digamos los adtos de la ultima semana, estuve buscando antes de postear mi pregunta y en contre un manual dnde me dice que ahy un tipo de borrado historico pero o no lo entendi bien o esta enfocado para otra BD, ojala alguien me pueda orientra
  #2 (permalink)  
Antiguo 30/11/2005, 12:22
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
No conozco nada como lo que buscas. En tu lugar comenzaría con algo como esto:

1) suponiendo que el campo de fecha se llama igual en todas las tablas
2) la fecha a partir de la cual eliminar es la misma en todas las tablas
3) no todas las tablas tienen el campo de fecha (por ejemplo, catalogos)

Revisa el script, copia el resultado y ejecútalo:

SELECT 'DELETE ' + table_name + ' WHERE campofecha < ''2005-01-01'''
FROM information_schema.columns
WHERE column_name = 'campofecha'
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #3 (permalink)  
Antiguo 30/11/2005, 12:25
 
Fecha de Ingreso: diciembre-2003
Mensajes: 595
Antigüedad: 20 años, 4 meses
Puntos: 1
Cita:
Iniciado por Mithrandir
No conozco nada como lo que buscas. En tu lugar comenzaría con algo como esto:

1) suponiendo que el campo de fecha se llama igual en todas las tablas
2) la fecha a partir de la cual eliminar es la misma en todas las tablas
3) no todas las tablas tienen el campo de fecha (por ejemplo, catalogos)

Revisa el script, copia el resultado y ejecútalo:

SELECT 'DELETE ' + table_name + ' WHERE campofecha < ''2005-01-01'''
FROM information_schema.columns
WHERE column_name = 'campofecha'

Gracias por la aportacion pero por ejemplo si no en todas las tablas manejan registros de fecha, como le puedo hacer para eliminar todo el contenido de las tablas son como 300
  #4 (permalink)  
Antiguo 01/12/2005, 15:07
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
El script que te di funciona solo para tablas con el campo de fecha. Si alguna no maneja fecha la tabla queda intacta.

Si quieres borrar registros de tablas sin fecha necesitas definir como le harás si no tienes un punto de referencia. Si las quieres dejar completas ya tienes la solución, si las quieres truncar completamente agrega esto a la lista:

SELECT 'TRUNCATE TABLE ' + table_name
FROM information_schema.tables
WHERE table_name NOT IN (SELECT DISTINCT table_name FROM information_schema.columns WHERE column_name = 'campofecha')
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #5 (permalink)  
Antiguo 01/12/2005, 15:13
 
Fecha de Ingreso: diciembre-2003
Mensajes: 595
Antigüedad: 20 años, 4 meses
Puntos: 1
Cita:
Iniciado por Mithrandir
El script que te di funciona solo para tablas con el campo de fecha. Si alguna no maneja fecha la tabla queda intacta.

Si quieres borrar registros de tablas sin fecha necesitas definir como le harás si no tienes un punto de referencia. Si las quieres dejar completas ya tienes la solución, si las quieres truncar completamente agrega esto a la lista:

SELECT 'TRUNCATE TABLE ' + table_name
FROM information_schema.tables
WHERE table_name NOT IN (SELECT DISTINCT table_name FROM information_schema.columns WHERE column_name = 'campofecha')
muchas gracias siempre puedo contar con ustedes
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:58.