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

reemplazar el campo de una tabla phpmyadmin

Estas en el tema de reemplazar el campo de una tabla phpmyadmin en el foro de Mysql en Foros del Web. Hola. En un wordpress Resulta que en el dia de ayer por un problema de un bucle que se creo por un codigo de un ...
  #1 (permalink)  
Antiguo 03/12/2013, 06:17
 
Fecha de Ingreso: junio-2005
Mensajes: 69
Antigüedad: 18 años, 10 meses
Puntos: 0
Pregunta reemplazar el campo de una tabla phpmyadmin

Hola. En un wordpress
Resulta que en el dia de ayer por un problema de un bucle que se creo por un codigo de un plugin empezó aumentar el numero de hits de los post a una velocidad gigantesca.
El tema ya esta solucionado pero por ejemplo un articulo publicado ayer tiene 300.000 hits y por tanto se me ha reemplazado totalmente la posicion en los articulos más leidos
He visto que los hits estan dentro de la tabla wp_postmeta where meta_key = custom_total_hits
La cosa es que me gustaria poder reemplazar a traves de phpmyadmin de una base de datos que tengo del dia anterior ese campo en todos los articulos que existian para no tener que hacerlo manualmente

Supongo que seria sacar de la base de datos del dia anterior todos los

SELECT *
FROM `wp_postmeta`
WHERE `meta_key` = "custom_total_hits"

y posteriormente hacer un reemplazo en la nueva base de datos siempre que el post_id sea el mismo.

Pero no se como hacer esto. Mis conocimientos de mysql no son muy grandes.
Si es posible lo que comento ¿podeis ayudarme o guiarme un poco con alguna referencia?
  #2 (permalink)  
Antiguo 03/12/2013, 07:14
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: reemplazar el campo de una tabla phpmyadmin

Cita:
La cosa es que me gustaria poder reemplazar a traves de phpmyadmin de una base de datos que tengo del dia anterior ese campo en todos los articulos que existian para no tener que hacerlo manualmente
En una sola query, unicamente si ambas bases están el el mismo servidor. De lo contrario el tema se te complicará.
__________________
¿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 03/12/2013, 07:21
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: reemplazar el campo de una tabla phpmyadmin

Haz una copia de seguridad de la base de datos por si la destrozas.

Crea una réplica de la tabla donde están los hits del día anterior, por supuesto con otro nombre.

Haz un script PHP o el lenguaje de servidor que uses que recorra esa tabla haciendo updates de los hits sobre la tabla real.
Tú tendrás que decidir la estrategia a seguir con los hits de elementos de la tabla actual que no estén en la tabla vieja.

También se puede realizar este segundo paso con un solo UPDATE que use los datos de dos tablas, desde el propio gestor de BD (ej. phpMyAdmin) por ejemplo
UPDATE tabla_nueva n
INNER JOIN tabla_vieja v
ON n.id=v.id
SET n.hit=v.hit

Elimina el script (o consérvalo si prevees cagarla de nuevo en el futuro) y la tabla replicada.

Última edición por marlanga; 03/12/2013 a las 07:31
  #4 (permalink)  
Antiguo 03/12/2013, 08:23
 
Fecha de Ingreso: junio-2005
Mensajes: 69
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: reemplazar el campo de una tabla phpmyadmin

La tabla es de un wordpress. La que actualmente esta en el servidor y se llama wp_post_meta y tiene actualmaente los datos del campo meta_key erroneos. La tabla esta creada asi

Código SQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `wp_postmeta` (
  2.   `meta_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  3.   `post_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT '0',
  4.   `meta_key` VARCHAR(255) DEFAULT NULL,
  5.   `meta_value` longtext,
  6.   PRIMARY KEY (`meta_id`),
  7.   KEY `post_id` (`post_id`),
  8.   KEY `meta_key` (`meta_key`)
  9. ) ENGINE=MyISAM

Por lo que me comentas deberia crear una nueva tabla llamada por ejemplo wp_postmeta2 asi

Código SQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `wp_postmeta2` (
  2.   `meta_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  3.   `post_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT '0',
  4.   `meta_key` VARCHAR(255) DEFAULT NULL,
  5.   `meta_value` longtext,
  6.   PRIMARY KEY (`meta_id`),
  7.   KEY `post_id` (`post_id`),
  8.   KEY `meta_key` (`meta_key`)
  9. ) ENGINE=MyISAM

y meter en ella los datos de la tabla del dia anterior (la que tiene los datos meta_key correctos...
Código SQL:
Ver original
  1. INSERT INTO `wp_postmeta` (`meta_id`, `post_id`, `meta_key`, `meta_value`) VALUES
  2. (28001, 8736, 'custom_total_hits', '000054376'),
  3. (28002, 8736, 'custom_total_hits', '000065276'),
  4. (28006, 8103, 'custom_total_hits', '000057476');

y luego realizar esto?
Código SQL:
Ver original
  1. UPDATE wp_postmeta
  2. INNER JOIN wp_postmeta2
  3. ON post_id=post_id
  4. SET meta_key=meta_key


¿Seria esto correcto? ¿o debe tener tambien diferente nombre el campo post_id y post_id2, meta_key y metakey 2?


Muchas gracias por la ayuda

Última edición por gnzsoloyo; 03/12/2013 a las 08:36
  #5 (permalink)  
Antiguo 03/12/2013, 08:53
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: reemplazar el campo de una tabla phpmyadmin

Casi. No crees la tabla a mano. Exporta sólo la tabla, cámbiale el nombre, e impórtala de nuevo.

No olvides hacer la copia de seguridad del database entero antes de hacer nada por si la lías, que no vengan a buscarme al contenedor de basura donde vivo.
  #6 (permalink)  
Antiguo 03/12/2013, 09:10
 
Fecha de Ingreso: junio-2005
Mensajes: 69
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: reemplazar el campo de una tabla phpmyadmin

Ok muchas gracias por la ayuda.
Voy a probar. Claro, antes hago una copia de seguridad de la base de datos.

Pero un detalle...

¿Puedes darme la dirección de ese contenedor donde vives? Es que he ido a la cloaca donde vive mi jefe y le he tenido que confesar que me has chivado el secreto del mysequelo. (me va a bajar el sueldo para aumentar el suyo). Menos mal que los dos soy yo.

Etiquetas: campo, php, phpmyadmin, reemplazar, select, sql, 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 10:13.