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

¿Borrar/vaciar tablas de BD con nombre en formato DATE?

Estas en el tema de ¿Borrar/vaciar tablas de BD con nombre en formato DATE? en el foro de Mysql en Foros del Web. Buenas noches a todos, Necesito o bien vaciar todas las tablas de una determinada BD, o bien, borrar las tablas que componen esa BD. Cada ...
  #1 (permalink)  
Antiguo 23/04/2012, 14:33
 
Fecha de Ingreso: septiembre-2009
Ubicación: Sevilla
Mensajes: 37
Antigüedad: 14 años, 7 meses
Puntos: 0
¿Borrar/vaciar tablas de BD con nombre en formato DATE?

Buenas noches a todos,

Necesito o bien vaciar todas las tablas de una determinada BD, o bien, borrar las tablas que componen esa BD. Cada 7 días hago un volcado a un servidor de backups y una vez realizado el volcado, me gustaría eliminarlas, para que en el siguiente volcado,no se repita la informacion.

El problema lo tengo, en que, el nombre de las tablas es la fecha actual del sistema.
He probado con los comandos para borrar, vaciar, truncate, etc y ninguno funciona.
Me dá un error a la hora de poner el nombre de la tabla.

Aqui una imagen:



He pensado en la forma de cambiar el nombre de las tablas, pero no hay manera. La estructura del servidor es así y cambiarlo seria dar demasiados problemas.

Gracias.
  #2 (permalink)  
Antiguo 23/04/2012, 16:05
 
Fecha de Ingreso: julio-2011
Mensajes: 220
Antigüedad: 12 años, 9 meses
Puntos: 72
Respuesta: ¿Borrar/vaciar tablas de BD con nombre en formato DATE?

Se necesita utilizar el caracter de acento grave (``), no el apóstrofo (''), para encerrar el nombre de la tabla a eliminar o vaciar.

DROP TABLE `2012-04-03`;

Última edición por lubtufano; 23/04/2012 a las 16:11
  #3 (permalink)  
Antiguo 24/04/2012, 06:39
 
Fecha de Ingreso: septiembre-2009
Ubicación: Sevilla
Mensajes: 37
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: ¿Borrar/vaciar tablas de BD con nombre en formato DATE?

Buenas tardes,

Se me olvido decirlo, pero ya probé usando las comillas simples ( ' ) y obtenia el mismo resultado....

EDITO: Probé con las comillas ' simples. Ahora si funciona usando ``.

Ya puedo seguir adelante con mi script, en el que necesito que semanalmente, se borren las tablas de los 7 dias de la semana.

Gracias :)

Última edición por KbzaJunior; 24/04/2012 a las 06:46
  #4 (permalink)  
Antiguo 26/04/2012, 05:13
 
Fecha de Ingreso: septiembre-2009
Ubicación: Sevilla
Mensajes: 37
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: ¿Borrar/vaciar tablas de BD con nombre en formato DATE?

Buenas tardes,

Despues de que me dierais la pista de ``, me he quedado atrancado en lo ultimo de lo ultimo!

Las funciones del script son estas:
1º- Creo una carpeta con la fecha actual
2º- Hago un mysqldump
3º- Borro la tabla la cual acabo de hacer el dump ( es lo que no funciona )
4º- Regreso al directorio padre


Este script, está pensado por ejemplo, para lanzarlo el lunes de cada semana, y realizaria dumps de las tablas generadas por cada dia de la semana, y posteriormente, las elimina.

Adjunto script:
Código:
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'`;

mkdir $DOMINGO && cd $DOMINGO
mysqldump -u root --password='xxx' conntrack $DOMINGO > $DOMINGO.sql && gzip -q $DOMINGO.sql
mysql -u root --password='xxx' conntrack -e 'DROP TABLE `$DOMINGO`;'
cd ..

mkdir $SABADO && cd $SABADO
mysqldump -u root --password='xxx' conntrack $SABADO > $SABADO.sql && gzip -q $SABADO.sql
mysql -u root --password='xxx' conntrack -e 'DROP TABLE `$SABADO`;'
cd ..
He probado todas las formas posibles de encerrar lo que viene despues de la option -e, he usado tanto comillas simples, dobles, graves... y ninguna dá resultado.

Gracias adelantadas :)

EDITO: La unica forma que logro obtener el nombre de la tabla ( 2012-04-25, como veis es formato date ) es usando esta sintaxis:
Código:
mysql -u root --password=xxx conntrack -e "DROP TABLE $DOMINGO"
Y obtengo este error:
Código:
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2012-04-25' at line 1

Última edición por KbzaJunior; 26/04/2012 a las 05:38
  #5 (permalink)  
Antiguo 27/04/2012, 07:51
 
Fecha de Ingreso: septiembre-2009
Ubicación: Sevilla
Mensajes: 37
Antigüedad: 14 años, 7 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 ?

Etiquetas: bd, formato, nombre, tabla, tablas
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 14:39.