메뉴 건너뛰기

bysql.net

PHPBB to ZBXE

2010.02.21 20:04

휘휘 조회 수:175133

phpbb로 사용하던 사이트를 zeroboard로 이전하기 위한 db단에서 자료 마이그레이션ㅋ

근데 phpbb의 bb코드 때문에  문서형태가..안습..ㅡㅜ



[사용자 ID] 


phpbb에서 zeroboard xe 버젼으로 기존 계정 정보를 가져가야하기 때문에 phpbb의 사용자 계정 정보 table에서 zeroboard의 table로 자료 insert

비밀번호는 phpbb가 자체 암호화 알고리즘을 사용하는관계로 사용자 아이디로 초기화 ^^


insert into xe_member

select @rownum:=@rownum+1 as rownum,username,user_email,password(username),username,' ',username,username, ' ',' ',' ','N','Y','N',' ','20090809010101','20090809010101','N',' ',' '
from phpbb_users,(select @rownum:=4) rn
where trim(user_ip) <>' ' and username <>'admin';


[게시글]

zero board 는 xe_documents 를 게시판 base로 사용하고

phpbb는 phpbb_topics에 각 주제물을 phpbb_posts에 내용및 comment를 가지고있음

a.forum_id는 두 게시판 모두 숫자를 기본 id로 사용하므로 zeroboard의 게시판 id와 서로 맞추면됨

하나의 게시판으로 통합할꺼라면 zeroboard의 게시판id를 확인하고 그아이디로 변경해주어야함.

topic_id 에 *2를 해주는건 zeroboard의 경우 게시물 id가 짝수로 구성되고 order하기 위한 값이 홀수라서.. ^^ (아닐수도~ㅋ)



delete from xe_documents;

insert into xe_documents
select a.topic_id*2,a.forum_id,'0','ko','N','N',a.topic_title,'N','N',
replace(replace(replace(b.post_text,'[','<'),']','>'),char(10),'<BR>')
,0,0,0,0,0,0,' ',
a.topic_first_poster_name,a.topic_first_poster_name,a.topic_first_poster_name,
(select member_srl from xe_member where user_id=a.topic_first_poster_name),topic_first_poster_name,' ',' ','N;'
, from_unixtime(a.topic_time)+0, from_unixtime(a.topic_last_post_time)+0,null,poster_ip,
-(a.topic_id*2),-(a.topic_id*2),'Y','N','Y','N'
from phpbb_topics a,phpbb_posts b
where a.topic_id=b.topic_id and topic_first_post_id=post_id;

[COMMENT]

뎃글은 zeroboard의 경우 xe_comments 로 다른 table을 사용하므로 phpbb의 주제물을
제외한 자료로 insert 하고 forum_id는 게시물과 같이 게시판 id, topic_id는 게시물의 내부 id이므로
맞게 변경해주어야함.ㅋ

그담에 xe_documents 의 comment_count를 update해주고
zeroboard xe가 자동으로 다시 list를 생성해줄수 있도록
comment_list 를 초기화~~^^

delete from xe_comments;

insert into xe_comments
select @rownum:=@rownum+4,a.forum_id,a.topic_id*2,'0','N',
replace(replace(replace(b.post_text,'[','<'),']','>'),char(10),'<BR>'),
'0','0','N',' ',
(select username from phpbb_users where user_id=poster_id),
(select username from phpbb_users where user_id=poster_id),
(select username from phpbb_users where user_id=poster_id),
(select member_srl from xe_member where user_id=
(select username from phpbb_users where user_id=poster_id)),
(select username from phpbb_users where user_id=poster_id),
' ','0',from_unixtime(b.post_time)+0,from_unixtime(b.post_time)+0,poster_ip,
-( @rownum2:=@rownum2+6)
from phpbb_topics a,phpbb_posts b,
(select @rownum:=71) rn,(select @rownum2:=71) rn2
where a.topic_id=b.topic_id and topic_first_post_id<>post_id;




update xe_documents a set comment_count=(
select count(*) from xe_comments b where b.document_srl=a.document_srl
group by b.document_srl);

delete from xe_comments_list;