Hola de nuevo,
Como me daba la impresión de que este comando sería bastante complicado de elaborar, finalmente he resuelto el problema al estilo de la montaña y Mahoma:
En primer lugar, he creado los campos
taxonomy, term_id y
name en la tabla
wp_term_relationships:
Código:
ALTER TABLE wp_term_relationships ADD COLUMN taxonomy varchar(32) NOT NULL DEFAULT '' AFTER term_taxonomy_id;
ALTER TABLE wp_term_relationships ADD COLUMN term_id bigint(20) NOT NULL DEFAULT '0' AFTER taxonomy;
ALTER TABLE wp_term_relationships ADD COLUMN name varchar(200) NOT NULL DEFAULT '' AFTER term_id;
Después, he actualizado los campos
term_id y
taxonomy de la tabla
wp_term_relationships desde la tabla
wp_term_taxonomy tomando como referencia el campo
term_taxonomy_id de ambas tablas:
Código:
UPDATE wp_term_relationships, wp_term_taxonomy
SET wp_term_relationships.taxonomy = wp_term_taxonomy.taxonomy, wp_term_relationships.term_id = wp_term_taxonomy.term_id
WHERE wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id;
A continuación, he actualizado el campo
name de la tabla
wp_term_relationships desde la tabla
wp_terms tomando como referencia el campo
term_id de ambas tablas:
Código:
UPDATE wp_term_relationships, wp_terms
SET wp_term_relationships.name = wp_terms.name
WHERE wp_term_relationships.term_id = wp_terms.term_id;
Después, he creado los campos
categories y
tags en la tabla
wp_posts (
longtext para permitir que quepan todas las categorías y etiquetas cuando las páginas y entradas tengan muuuuchas):
Código:
ALTER TABLE wp_posts ADD COLUMN tags longtext CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' AFTER post_title;
ALTER TABLE wp_posts ADD COLUMN categories longtext CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' AFTER post_title;
A continuación, he importado en modo multivaluado los nombres de categorías y etiquetas a los campos
categories y
tags de la tabla
wp_posts:
Código:
UPDATE wp_posts
SET wp_posts.categories =
(SELECT GROUP_CONCAT(DISTINCT
CASE WHEN wp_term_relationships.taxonomy = 'category'
THEN wp_term_relationships.name END
ORDER BY wp_term_relationships.term_taxonomy_id
SEPARATOR "|")
FROM wp_term_relationships
WHERE wp_posts.ID = wp_term_relationships.object_id
GROUP BY wp_posts.ID)
Código:
UPDATE wp_posts
SET wp_posts.tags =
(SELECT GROUP_CONCAT(DISTINCT
CASE WHEN wp_term_relationships.taxonomy = 'post_tag'
THEN wp_term_relationships.name END
ORDER BY wp_term_relationships.term_taxonomy_id
SEPARATOR "|")
FROM wp_term_relationships
WHERE wp_posts.ID = wp_term_relationships.object_id
GROUP BY wp_posts.ID)
Y, finalmente, he comprobado que todo ha ido bien:
Código:
SELECT ID, post_title, categories, tags FROM wp_posts ORDER BY ID;
Ha quedado perfecto, tal y como quería tenerlo para facilitar la migración a Plone.
Gracias de nuevo a Leo por la ayuda prestada y saludos cordiales,
Manuel