Bunny's Technorati Tags 와 Jerome's Keywords 는 모두 wordpress 에서 tag 를 붙이는 데 사용할 수 있는 플러그인입니다. 그동안 그냥 아무 의미 없이 Bunny's 를 사용해왔는데, Jerome's Keywords 를 사용할 경우 tag cloud 라거나 tag 를 이용한 검색등이 가능해지길래! 과감하게 마이그레이션을 진행했습니다.
알게 모르게 태그를 달아놓은 포스트가 좀 되다 보니 -_-; 손으로 수정하기는 만만치 않고 프로그램을 짜자니 귀찮아서, 오랫만에 sql 놀이를 해보았습니다.
SQL:
-
CREATE TEMPORARY TABLE wp_postmeta2 SELECT * FROM wp_postmeta;
-
UPDATE wp_postmeta
-
SET meta_key='keywords', meta_value=REPLACE(trim(meta_value),' ', ',')
-
WHERE
-
meta_id NOT IN (
-
SELECT meta_id FROM wp_postmeta2
-
WHERE meta_key='keywords'
-
)
-
&&
-
meta_key='tags'
-
&&
-
meta_value!='';
위의 sql 문이 제가 migrate 를 하는데 사용한 query 입니다. update 할 대상을 sub query 에서 읽게 되면 에러가 발생하는 듯 싶어서 wp_metapost 테이블을 복제한 임시 테이블 wp_metapost2 를 만들어 작업을 해야 했습니다.
요 몇 일 Jerome's Keyword 포멧에 맞게 태그를 작성해놓은 글들이 있기 때문에, keywords 가 이미 있는 글들을 제외시켜야 했으므로, sub query 와 not in operator 를 사용했습니다. 나머지들 중 tags 란 키를 가지고 meta_value 값이 빈 칸이 아닌 경우에 한해서 tags -> keywords 변환과 meta_value 의 space(' ') 를 comma (',') 로 변경시켜주는 작업을 합니다..
혹시나 Bunny's technorati tags 를 쓰다가 Jerome's Keywords 로 갈아타고 싶으신 분들은 그냥 저 sql 문을 복사해다가 실행하면 되겠습니다. 단! subquery 를 지원해야하고 다른 table 을 복제해서 새로운 테이블을 만들어내야 하기 때문에 mysql 5.0 이상이 필요할 겁니다. table 복제를 알아서 해결하신다면 mysql 4.1 로도 가능할 겁니다.
Jarome's keywords 를 위한 포스트를 작성하신 적도 없다면 sub query 도 제외시킬 수 있으니 버젼에 관계 없이 사용가능할 수도 있겠습니다.