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

Copiar datos de una tabla en otra

Estas en el tema de Copiar datos de una tabla en otra en el foro de Mysql en Foros del Web. Me gustaria saber si es posible realizar una query en phpmyadmin para copiar los datos de una tabla de wordpress en otra pero siempre que ...
  #1 (permalink)  
Antiguo 09/05/2018, 12:02
 
Fecha de Ingreso: junio-2005
Mensajes: 69
Antigüedad: 18 años, 10 meses
Puntos: 0
Copiar datos de una tabla en otra

Me gustaria saber si es posible realizar una query en phpmyadmin para copiar los datos de una tabla de wordpress en otra pero siempre que post_id de una tabla sea igual a id de la otra y el campo este vacio.

Resulta que tengo un texto en la tabla wp_postmeta en el campo meta_value y querria ponerlo en el campo post_excerpt de la tabla wp_posts correspondiente siempre que este vacio
El campo meta_value lo insertaba con el plugin advanced custom fields y lo utilizaba como resumen en los alrticulos


No se si es posible. lo pongo en español a ver

Copiar meta_value de la tabla wp_postmeta
en el campo post_excerpt de la tabla wp_posts
siempre que el campo post_id de la tabla wp_postmeta
sea igual al campo id de la tabla wp_posts
y siempre que el campo meta_key de la tabla wp_postmeta sea igual a "resumen"
y el campo post_excerpt de la tabla wp_post no este vacio.

Los campos de la tabla wp_posts son entre otros estos...
Código:
ID	bigint(20)
post_author	bigint(20)
post_date	datetime
post_date_gmt	datetime
post_content	longtext
post_title	text
post_excerpt	text
post_status varchar(20)
comment_status	varchar(20)
....
Y los campos de la tabla wp_postmeta
Código:
meta_id	bigint(20)
post_id	bigint(20)
meta_key varchar(255)
meta_value	longtext
no se si es posible realizar una query que recorra todos los campos de postmeta y post id para copiar ese campo con esas condiciones.
Ademas veo que el campo donde se tiene que copiar ...
post_excerpt de la tabla wp_posts es text
pero el campo meta_value de la tabla wp_postmeta de donde coge el valor es longtext
  #2 (permalink)  
Antiguo 09/05/2018, 13:26
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Copiar datos de una tabla en otra

Si se puede, seria hacer algo como esto


Código MySQL:
Ver original
  1. insert into tabla_mysql
  2. select * from tabla_posgress as t1
  3. left join tabla_mysql as t2 on (t1.id=t2.id)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 14/05/2018, 08:02
 
Fecha de Ingreso: junio-2005
Mensajes: 69
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: Copiar datos de una tabla en otra

Gracias Libras.
A través de la query que me pasas he creado una con los campos de un wordpress pero me sale lo que seria seleccionar pero no lo que seria insertar en el campo post_excerpt de la tabla wp_posts

Si hago esto me realiza la selección correcta

select * from wp_postmeta as t1
left join wp_posts as t2 on (t1.post_id=t2.id)
where t2.post_excerpt is not null and t2.post_type LIKE 'post' and t2.post_status LIKE 'publish' and t1.meta_key LIKE 'resumen_de_la_noticia' and t1.meta_value is not null

Ahora lo que quiero es insertar el campo meta_value sacado de la tabla wp_postmeta dentro del campo post_excerpt de la tabla wp_posts

hago esto pero meda un error

insert into wp_posts.post_excerpt
select * from wp_postmeta as t1
left join wp_posts as t2 on (t1.post_id=t2.id)
where t2.post_excerpt is not null and t2.post_type LIKE 'post' and t2.post_status LIKE 'publish' and t1.meta_key LIKE 'resumen_de_la_noticia' and t1.meta_value is not null
  #4 (permalink)  
Antiguo 14/05/2018, 09:15
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Copiar datos de una tabla en otra

Cita:
Iniciado por pepu Ver Mensaje
Gracias Libras.
A través de la query que me pasas he creado una con los campos de un wordpress pero me sale lo que seria seleccionar pero no lo que seria insertar en el campo post_excerpt de la tabla wp_posts

Si hago esto me realiza la selección correcta

select * from wp_postmeta as t1
left join wp_posts as t2 on (t1.post_id=t2.id)
where t2.post_excerpt is not null and t2.post_type LIKE 'post' and t2.post_status LIKE 'publish' and t1.meta_key LIKE 'resumen_de_la_noticia' and t1.meta_value is not null

Ahora lo que quiero es insertar el campo meta_value sacado de la tabla wp_postmeta dentro del campo post_excerpt de la tabla wp_posts

hago esto pero meda un error

insert into wp_posts.post_excerpt
select * from wp_postmeta as t1
left join wp_posts as t2 on (t1.post_id=t2.id)
where t2.post_excerpt is not null and t2.post_type LIKE 'post' and t2.post_status LIKE 'publish' and t1.meta_key LIKE 'resumen_de_la_noticia' and t1.meta_value is not null
Seria algo asi:

Código SQL:
Ver original
  1. INSERT INTO wp_posts (post_excerpt)
  2. SELECT meta_value  FROM wp_postmeta AS t1
  3. LEFT JOIN wp_posts AS t2 ON (t1.post_id=t2.id)
  4. WHERE t2.post_excerpt IS NOT NULL AND t2.post_type LIKE 'post' AND t2.post_status LIKE 'publish' AND t1.meta_key LIKE 'resumen_de_la_noticia' AND t1.meta_value IS NOT NULL
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 15/05/2018, 03:13
 
Fecha de Ingreso: junio-2005
Mensajes: 69
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: Copiar datos de una tabla en otra

Pues me da error. Me da la impresion de que intenta crear una nueva fila en la tabla wp_posts, en vez de insertar dentro del campo post_excerpt de la tabla wp_posts que es lo que quiero

El error que me de que la fila esta duplicada.

Código:
INSERT INTO wp_posts (post_excerpt)
SELECT meta_value  FROM wp_postmeta AS t1
LEFT JOIN wp_posts AS t2 ON (t1.post_id=t2.ID)
WHERE t2.post_excerpt IS NOT NULL AND t2.post_type LIKE 'post' AND t2.post_status LIKE 'publish' AND t1.meta_key LIKE 'resumen_de_la_noticia' AND t1.meta_value IS NOT NULL
  #6 (permalink)  
Antiguo 15/05/2018, 04:40
 
Fecha de Ingreso: junio-2005
Mensajes: 69
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: Copiar datos de una tabla en otra

Ok Libras.
Parece que lo tengo.
Me gustaria me comentases si crees que esta bien o puede darse algun error.
En principio lo he provado en local y parece que ha sido correcto. Pero por si se me pasa algo ¿Crees puede haber algo mal o prblematico?

Código:
UPDATE wp_posts INNER JOIN wp_postmeta
ON wp_posts.ID = wp_postmeta.post_id and wp_posts.post_excerpt IS NOT NULL AND wp_posts.post_type LIKE 'post' AND wp_posts.post_status LIKE 'publish' AND wp_postmeta.meta_key LIKE 'resumen_de_la_noticia' AND wp_postmeta.meta_value IS NOT NULL
SET wp_posts.post_excerpt = wp_postmeta.meta_value

Última edición por pepu; 15/05/2018 a las 04:45
  #7 (permalink)  
Antiguo 15/05/2018, 14:01
Avatar de vicram10  
Fecha de Ingreso: enero-2009
Ubicación: Asuncion
Mensajes: 326
Antigüedad: 15 años, 2 meses
Puntos: 27
Respuesta: Copiar datos de una tabla en otra

usas el LIKE como si se tratase de una igualdad, no seria mejor

Código SQL:
Ver original
  1. wp_posts.post_status LIKE 'publish'

cambiar por

Código SQL:
Ver original
  1. wp_posts.post_status = 'publish'

asi en cada una de las partes donde usas LIKE, si tu idea es buscar por similitud entonces esta bien pero te faltaria agregar "%"

Código SQL:
Ver original
  1. wp_posts.post_status LIKE '%publish%'
__________________
Asunción Paraguay
Licenciado - Desarrollador Web - Lider de Proyecto/Desarrollador Banco Local
Espacio Geek - Comunidad Tecnologica
  #8 (permalink)  
Antiguo 16/05/2018, 00:42
 
Fecha de Ingreso: junio-2005
Mensajes: 69
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: Copiar datos de una tabla en otra

Gracias Vicram10 por la aclaración.
Me parece mejor lo que dices ya que cuando digo wp_posts.post_status LIKE 'publish'
realmente quiero decir que sea exactamente 'publish' . No valdria que fuese 'publish yes' por ejemplo

Entiendo según dices que en este caso que quiero es mejor utilizar el simbolo =

En este caso me quedaria...

Código:
UPDATE wp_posts INNER JOIN wp_postmeta
ON wp_posts.ID = wp_postmeta.post_id and wp_posts.post_excerpt IS NOT NULL AND wp_posts.post_type = 'post' AND wp_posts.post_status = 'publish' AND wp_postmeta.meta_key = 'resumen_de_la_noticia' AND wp_postmeta.meta_value IS NOT NULL
SET wp_posts.post_excerpt = wp_postmeta.meta_value

Tengo 976,125 filas en la tabla wp_postmeta y 196,486 en la tabla wp_posts

¿Algun problema a tener en cuenta al realizar esta query en phpmyadmin en el servidor de produccion?
  #9 (permalink)  
Antiguo 16/05/2018, 07:43
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Copiar datos de una tabla en otra

Cita:
Iniciado por pepu Ver Mensaje

Tengo 976,125 filas en la tabla wp_postmeta y 196,486 en la tabla wp_posts

¿Algun problema a tener en cuenta al realizar esta query en phpmyadmin en el servidor de produccion?
este query seria de una sola ejecucion? o seria un query recurrente?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #10 (permalink)  
Antiguo 16/05/2018, 12:01
 
Fecha de Ingreso: junio-2005
Mensajes: 69
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: Copiar datos de una tabla en otra

Solo una vez para copiar todos los datos de un campo de una tabla en otro campo de otra tabla y dejar de usar ya el plugin que crea ese campo.
Osea una vez. el problema es si es muy largo el tiempo de ejecucion para un servidor . Pero no se. Por eso pregunto
  #11 (permalink)  
Antiguo 16/05/2018, 12:03
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Copiar datos de una tabla en otra

Todo depende de la velocidad del servidor, pero creo que para un update de 1000 000 de registros y para una vez que vas a ejecutar la consulta esta bien
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #12 (permalink)  
Antiguo 17/05/2018, 19:57
Avatar de vicram10  
Fecha de Ingreso: enero-2009
Ubicación: Asuncion
Mensajes: 326
Antigüedad: 15 años, 2 meses
Puntos: 27
Respuesta: Copiar datos de una tabla en otra

realmente asi como dice Libras, para hacer solo una sola vez no le veo inconveniente tampoco.

pero si podes hacer una copia en algun ambiente de desarrollo y trabajar ahi y al final hacer la importacion nada mas de los registros será mas conveniente
__________________
Asunción Paraguay
Licenciado - Desarrollador Web - Lider de Proyecto/Desarrollador Banco Local
Espacio Geek - Comunidad Tecnologica

Etiquetas: 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 17:48.