XE & Textyle에서 WordPress로 데이터 옮기기

1. 우선 문서부터 이전.

주의 할점은 post_author가 1인지 체크 하시고
외국에 계신다면 post_date_gmt가 한국시간으로 -9이기때문에 이부분만 원하는 시간대로 바꾸시면 되겠습니다.

insert into wp_posts (post_author, post_date, post_date_gmt,post_content,post_title)select1,STR_TO_DATE(regdate,'%Y%m%d%H%i%s') regdate,date_add(STR_TO_DATE(regdate,'%Y%m%d%H%i%s'),interval -9 hour) regdate,content,titlefrom xe_documents
2. 조회수 이전.

WordPress에는 조회수가 없기 때문에 우선 플러그인을 설치해야 합니다. 저같은 경우엔  “Page Views Count”를 설치 했습니다.

insert into wp_pvc_total (postnum,postcount)select a.id,c.readed_count from wp_posts as aleft join `wp_pvc_total`as b on a.id = b.postnumleft join `xe_documents` as c on STR_TO_DATE(c.regdate,'%Y%m%d%H%i%s') = a.post_datewhere readed_count is not null
3. 댓글 이전.

 저같은 경우 가입회원데이터가 없기 때문에 user_id가 모두 0입니다. 회원 이전도 필요하다 싶으면 따로 연락주세요. 소정의 기부금도 같이 제기해주시면 제일처럼 해주겠죠? ㅎㅎ
그리고 워드프레스엔 비밀댓글이 없기 때문에 심사대기상태로 설정했습니다.

insert into wp_comments(comment_post_id, comment_author, comment_author_email,comment_author_IP, comment_author_url, comment_date, comment_date_gmt,comment_content, comment_approved)selectc.id,a.nick_name,a.email_address,a.ipaddress,a.homepage,STR_TO_DATE(a.regdate,'%Y%m%d%H%i%s'),date_add(STR_TO_DATE(a.regdate,'%Y%m%d%H%i%s'),interval -9 hour) regdate,a.content,case a.is_secret when 'N' then '1' else '0' endfrom xe_comments as ainner join xe_documents as b on a.document_srl = b.document_srlinner join wp_posts as c on STR_TO_DATE(b.regdate,'%Y%m%d%H%i%s') = c.post_date and b.title = c.post_title

 

update xe_comments as a
inner join xe_comments as b on a.comment_srl = b.parent_srl
inner join wp_comments as c on STR_TO_DATE(b.regdate,’%Y%m%d%H%i%s’) = c.comment_date and b.content = c.comment_content
inner join wp_comments as d on STR_TO_DATE(a.regdate,’%Y%m%d%H%i%s’) = d.comment_date and a.content = d.comment_content
set
c.comment_parent = d.comment_ID

 

4. 태그 이전.

워드프레스의 테이블 구조 보면 확실히 심플하면서도 강력함을 느낄수 있습니다.
프로그램에서의 DB구조의 중요성을 다시 느끼는게 합니다.
태그 이전하려면 세개의 테이블에 데이터 입력을 해야 합니다.
처음테이블(wp_terms)은 키워드정보를 담는 테이블입니다. 카테고리,태그등등 실제 정보는 여기테이블에 등록됩니다.
1. 우선 다음 쿼리를 실해하여 wp_terms테이블에 정보를 등록합니다.

insert into wp_terms(name,slug)select tag,replace(tag,' ','-') from xe_tagsgroup by tag

2. 그다음으로 두번째는 처음 등록한 정보가 태그 라는걸 표시해줘야 합니다.
다음 쿼리를 실행 합니다.

insert into `wp_term_taxonomy` (term_id,taxonomy,count)selecta.term_id,'post_tag',c.cntfrom `wp_terms` as aleft join `wp_term_taxonomy` as b on a.term_id = b.term_idleft join (select tag,count(*) as cnt from xe_tagsgroup by tag) as c on a.name = c.tagwhere b.term_id is null

2.1 여기서 주의 할 점은 count수 인데요,
워드프레스에 아무데이터가 없다면 패스 하시고 워드프레스에 기존에 입력된 태그가 있다면
중복입력이 되었는지 다음쿼리를 실해하여 체크합니다.
중복입력된 태그는 wp_term_taxonomy와 wp_terms에서 하나만 남기고 count수를 수정해줍니다.

--wp_term_taxonomy에서 제일 처음 입력된 태그의 count수를 수정updatewp_term_taxonomy as aainner join (select b.name,min(b.term_id) as id ,sum(count) cnt from wp_term_taxonomy as ainner join wp_terms as b on a.term_id = b.term_idgroup by namehaving count(*)>1) as bb on aa.term_id = bb.idsetaa.count = bb.cnt;--wp_terms테이블의 중복태그 제거delete bbfrom (select b.name,min(b.term_id) as id ,sum(count) cnt from wp_term_taxonomy as ainner join wp_terms as b on a.term_id = b.term_idgroup by namehaving count(*)>1) as aaleft join wp_terms as bb on aa.name = bb.namewhere aa.id <> bb.term_id;--wp_term_taxonomy테이블의 중복태그 제거delete afrom wp_term_taxonomy as aleft join wp_terms as b on a.term_id = b.term_idwhere b.term_id is null

3.포스팅 내용과 태그 매칭

insert into wp_term_relationships (object_id,term_taxonomy_id)select id,term_taxonomy_id from(select a.*,b.term_id,c.term_taxonomy_id from xe_tags as aleft join wp_terms as b on a.tag = b.nameleft join wp_term_taxonomy as c on b.term_id = c.term_id) as aaleft join(select document_srl,title,id from xe_documents as ainner join wp_posts as b on STR_TO_DATE(a.regdate,'%Y%m%d%H%i%s') = b.post_date ) as bbon aa.document_srl = bb.document_srl;

5. 카테고리 이전.

6. 이미지 기타 첨부파일 이전.

우선 이전후 xe전체폴더를 삭제하실거면  /xe/files/attach 디렉토리에 있는 images 폴더를 옮김니다. 옮기지 않을거면 그냥 그대로 놔두고 절대 경로로 바꿔 줍니다.  ps:리눅스 서버에선 대소 문자 구분하기때문에 1.jpg 와 1.JPG가 서로 다른파일일 경우가 있습니다. 윈도우즈 혹은 OSX엔 대소문자 구분안하기 때문에 파일 옮길때 1.jpg가 1.JPG를 덮어 씁니다.  해당사항이 없으면 그냥 옮기시면 되구요, 동일명에 대소문자로 다른 파일이 존재한다면 그냥 이미지 폴더만 놔두고 다른폴더 삭제하는게 편합니다. 저같은 경우엔 많이 존재하네요 ㅠㅠ

update wp_posts set
post_content = REPLACE(post_content, ‘files/attach/images’, ‘절대경로/images’)
WHERE post_content like ‘%files/attach/images%’