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

Eliminar Parte del Contenido de una Tabla

Estas en el tema de Eliminar Parte del Contenido de una Tabla en el foro de Mysql en Foros del Web. Deseo eliminar todo el contenido de una tabla que se encuentre entre las siguientes etiquetas <!--:en-->Texto a eliminar<!--:--> incluyendo las etiquetas. Gracias...
  #1 (permalink)  
Antiguo 20/10/2013, 13:42
 
Fecha de Ingreso: marzo-2012
Ubicación: Cuba
Mensajes: 29
Antigüedad: 12 años, 1 mes
Puntos: 1
Eliminar Parte del Contenido de una Tabla

Deseo eliminar todo el contenido de una tabla que se encuentre entre las siguientes etiquetas <!--:en-->Texto a eliminar<!--:-->
incluyendo las etiquetas. Gracias

Última edición por gnzsoloyo; 20/10/2013 a las 13:59 Razón: tamaño innecesariamente grande. Confunde la lectura. Publicidad encubierta.
  #2 (permalink)  
Antiguo 20/10/2013, 14:00
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Eliminar Parte del Contenido de una Tabla

Por lo general, eso sería tema de programación, ya que es donde más fácilmente se puede haer.
¿Debemos entender que quieres limpiar eso, o reemplazarlo por otra cosa?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 20/10/2013, 21:22
 
Fecha de Ingreso: marzo-2012
Ubicación: Cuba
Mensajes: 29
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Eliminar Parte del Contenido de una Tabla

Exacto, deseo a través de alguna sentencia SQL eliminar de la base de datos todo los texto que se encuentren entre estas etiquetas, incluyendo las etiquetas.
  #4 (permalink)  
Antiguo 21/10/2013, 01:27
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Eliminar Parte del Contenido de una Tabla

cubahostels,
cuando dices tabla, me imagino que te refieres a los campos de una tabla. Tendrás que hacer la sustitución campo a campo. Una pregunta: ¿esa etiqueta puede aperecer más de una vez en un campo? Si solo apareciera una vez en un campo, tendrías alguna solución sencilla. Si no es así, la cosa se complica y deberáis hacerlo mediante programación. He leído por ahí, aunque no lo he probado, sobre la posibilidad de hacer estas sustituciones usando regexp en MySQL usando UDF, con librerías específicas; pero si es para un solo caso, yo usaría programación.
Mira en el manual de MySQL sobre UDF y mira aquí también:
https://github.com/mysqludf/lib_mysqludf_preg#readme
  #5 (permalink)  
Antiguo 21/10/2013, 19:57
 
Fecha de Ingreso: marzo-2012
Ubicación: Cuba
Mensajes: 29
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Eliminar Parte del Contenido de una Tabla

Si son los valores de un campo de la tabla, aparece en muchas ocasiones. La verdad no tengo la menor idea de como borrar esto. Gracias por su ayuda.
Saludos
  #6 (permalink)  
Antiguo 22/10/2013, 01:52
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Eliminar Parte del Contenido de una Tabla

Con programación, pero debes hacerlo con cuidado primero sobre un copia de la base para probar.
Deja además otra copia de la base por si ocurre algo extraño durante el proceso. Por otra parte, no nos has dicho si tienes esas etiquetas en un solo campo de la base o en varios de ellos. Si tuvieras varios, el proceso que te contaré tendrías que aplicarlo a cada uno de esos campos.

haría una prueba sobre una copia de la base en local para ver el efecto.

I)
Imaginemos que tengo esas etiquetas en el campo llamado campoetiquetas dentro de la base.

1) Creo un campo nuevo con las mismas características que campoetiquetas y llamado campoetiquetas2, por ejemplo.
2) cargo todos los valores de campoetiquetas en campoetiquetas2
UPDATE nombrebase SET campoetiquetas2 = campoetiquetas
Y ya tengo en campoetiquetas2 todos los valores de campoetiquetas. Eso es para trabajar sobre seguro y no tocar de momento el campo campoetiquetas.

II) Ahora toca la parte de programación. Para eso tienes que hacer un script con tu programa. En este foro no podemos ayudarte en eso y tendrás que pedir ayuda en el foro de tu programa. Ya verás que es relativamente fácil. No obstante te daré algunas indicaciones a modo de orientación. Los pasos, tras la conexión a tu base de pruebas serían:
1) buscar todos los registros que tienen incluida en ese campo esa etiqueta o tag. Para eso una consulta como esta:
SELECT * FROM tutabla WHERE campoetiqueta2 LIKE '%<!--:en-->%'
con eso ya tendrás todos los registros en los que aparece al menos una etiqueta de ese tipo.

2) borrar de las variables las etiquetas y su contenido, y lanzar la consulta de actualización con los nuevos valores. Se trata de en cada paso del ciclo reemplazar por nada todo eso en cada uno de los registros. En los programas existen funciones para hacerlo. Por ej. en PHP la función preg_replace usando el patrón correspondiente, luego tienes que actualizar con el resultado de la operación el id correspondiente de cada registro. Tienes que hacer que el programa lance una consulta de actualización por cada registro que tenga esa etiqueta, es decir con el WHERE id = $id. Pide ayuda en el programa con el que trabajes y haz pruebas.

3) Para este punto ya no hace falta el script. Una vez lanzado el script, y mediante el recorrido de los datos y haciendo búsquedas específicas sobre ese campo campoetiquetas2 por si hubiera quedado algo de las etiquetas, compruebas que todo está como quieres (a veces quedan dos espacios en blanco seguidos y hay que dejarlos en uno; para eso basta con una consulta de actualización). Cuando todo está revisado y comprobado, puedes actualizar campoetiquetas con el valor de campoetiquetas2, y finalmente eliminar el campo campoetiquetas2. Y ya tendrás en campoetiquetas los valores como deseabas.

Pide ayuda en el foro de programación e indicaciones sobre qué expresión regular emplear para lo que quieres, es decir, borrar tanto las etiquetas como su contenido, pero aclarando que puede haber varias etiquetas dentro del mismo campo.

Etiquetas: contenido, sql, sql-sentencia, tabla
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 00:25.