Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Respaldo con condicional (https://www.clubdelphi.com/foros/showthread.php?t=69433)

dado 17-08-2010 22:25:51

Respaldo con condicional
 
Hola,

Tengo esta situacion, aver si se les ocurre como solucionarlo.

Tengo una base de datos que tiene informacion desde el año 2003, asi que son ya 7 años de estar acumulando "polvo".

Mi intencion es hacer el respaldo *solo* del 2003 al 2008, y de esa manera proceder a borrarlo de la base de datos y solo quedarme con los años 2009 y 2010.

Hay alguna funcion que me permita hacer el respaldo con la instruccion "where year(fecha) < 2009" ?

Uso Delphi 7 y MySQL V5

Tengo esta pequeña solucion pero no me gusta y por eso pido ayuda:

1. Hacer el respaldo de TODO (años 2003-2010)
2. Borrar con algo como "delete from tabla where fecha>2008" (se borra 2009 y 2010, queda 2003 al 2008)
3. Volver a hacer el respaldo, en este caso ya solo tendria los años 2003 a 2008
4. Restaurar el respaldo que se hizo en el paso 1 (todo de regreso otra vez)
5. Borrar con algo como "delete from tabla where fecha<2009" (borro del 2003 al 2008, me quedo con 2009 y 2010)

adeszeus 18-08-2010 04:36:04

copia el archivo de tú base de datos
 
por que no haces un formulario donde hagas un respaldo de tú base de datos a tú archivo respaldado aplicas tú filtro de eliminar los recientes y después vuelves a cargar la de uso y eliminas los registros viejos

microbiano 18-08-2010 20:50:47

Respuesta
 
HOLA NO SE QUE BASE DE DATOS UNSAS PERO PARA MI QUE LO MAS CONVENIENTE
ES CREAR EL RESPALDO CON LA SIGUIENTE CONDICION

SELECT * INTO [nombre_tabla_respaldo)
FROM tabla_origen WHERE anño<2008

y bueno a la tabla original le hace un delete

delete from tabla original where año<2008.

creo que con eso quedaria.


ahora si lo quieres hacer por delphi pues puedes hacer la consulta con un adoquery.
y posteriormente ir recorriendo los registros para irlos insertando en la tabla.




dado 18-08-2010 21:12:09

Select...Into.... mmmh, si eso podria funcionar.

Gracias, voy a probar por ese lado.

dado 20-08-2010 20:40:31

Aqui ya encontre la solucion. Gracias a microbiano por darme una pista.

Encontre algo muy interesante, estoy seguro que en la escuelita debieron habermelo enseñado pero como nunca lo uso....

se puede hacer :

create table mitabla select * from mitabla2 where (condicion);

esto crea una table nueva llamada "mitabla" con los mismos campos que "mitabla2" y de paso copia los datos de "mitabla2" a "mitabla" que cumplan con la condicion. TODO EN UN SOLO PASO!! esta chido.


La franja horaria es GMT +2. Ahora son las 22:34:03.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi