Ver Mensaje Individual
  #5 (permalink)  
Antiguo 27/04/2012, 07:51
KbzaJunior
 
Fecha de Ingreso: septiembre-2009
Ubicación: Sevilla
Mensajes: 37
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: ¿Borrar/vaciar tablas de BD con nombre en formato DATE?

Os comento como de momento tengo la situacion:
Desde una unica linea, saco dump de todos los dias de la semana, funciona perfecto.
Dado que no sé como eliminar las tablas, posteriormente ejecuto el conntrack.sql, que me "VIRGINIZA" la BD.

Código:

# Defino los dias de la semana
FECHA=`date +%Y-%m-%d`;
LUNES=`date +%Y-%m-%d --date='-7 day'`;
MARTES=`date +%Y-%m-%d --date='-6 day'`;
MIERCOLES=`date +%Y-%m-%d --date='-5 day'`;
JUEVES=`date +%Y-%m-%d --date='-4 day'`;
VIERNES=`date +%Y-%m-%d --date='-3 day'`;
SABADO=`date +%Y-%m-%d --date='-2 day'`;
DOMINGO=`date +%Y-%m-%d --date='-1 day'`;

# Creo un directorio cuyo nombre es el primer dia de la semana -- el ultimo dia de la semana y luego entro en el.
mkdir $LUNES--$DOMINGO && cd $LUNES--$DOMINGO

# Lanzo el comando para dumpear las tablas generadas a lo largo de la semana. Luego, lo comprimo con gzip
mysqldump -u root --password='xxx' conntrack $DOMINGO $SABADO $VIERNES $JUEVES $MIERCOLES $MARTES $LUNES > $LUNES--$DOMINGO.sql && gzip -q $LUNES--$D$

# Ejecuto este .sql para regenerar la BD conntrack. Creando la tabla tabidx
mysql -u root --password='xxx' conntrack < /home/conntrack.sql

# Vuelvo a posisionarme en el directorio padre
cd ..

# Reinicio el servidor para que se cree la tabla del dia actual.
reboot
Y el archivo conntrack.sql contiene:
Código:
-- Borrar la BD
DROP DATABASE conntrack;

-- Crear la BD
CREATE DATABASE IF NOT EXISTS conntrack;

-- Usar la BD ( para que luego cree la tabla tabidx dentro de conntrack )
USE conntrack;

-- Borrar la tabla si existe
DROP TABLE IF EXISTS `tabidx`;

-- Crear la tabla si NO existe
CREATE TABLE IF NOT EXISTS `tabidx` (
  `date` date NOT NULL,
  PRIMARY KEY  (`date`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Por que hago un reboot? Para que en el servidor, se cree la tabla con el nombre de la fecha actual del sistema. Es un poco chapuzas, por eso pregunto... ¿se podria en el conntrack.sql especificar de alguna forma, que: no borre la tabla cuyo nombre sea igual a la fecha actual ( CURDATE() ), y con eso evito reiniciar y una posible perdida de informacion ?