## --------- users ---------
ALTER TABLE `new-forum`.`phpbb_users` ADD `user_oldid` INT UNSIGNED DEFAULT '0' NOT NULL ;
INSERT INTO `new-forum`.`phpbb_users` (username,username_clean,user_lang,user_email,user_email_hash,user_icq,user_sig_bbcode_bitfield,user_sig_bbcode_uid,user_oldid)
SELECT username,LOWER(username),'ru',email,crc32(lower(email)),icq,'+Q==','1',userid FROM `old-forum`.user;
UPDATE `new-forum`.`phpbb_users`,`old-forum`.usertextfield SET `new-forum`.`phpbb_users`.user_sig = `old-forum`.`usertextfield`.signature
WHERE `new-forum`.`phpbb_users`.user_oldid = `old-forum`.`usertextfield`.userid;
## --------- forums ---------
ALTER TABLE `new-forum`.`phpbb_forums` ADD `forum_oldid` INT UNSIGNED DEFAULT '0' NOT NULL ;
INSERT INTO `new-forum`.`phpbb_forums` (parent_id,forum_name,forum_desc,forum_link,forum_rules_options,forum_type,forum_flags,display_subforum_list,display_on_index,enable_indexing,enable_icons,forum_oldid)
SELECT 1,title,description,link,7,1,1,1,1,1,1,forumid FROM `old-forum`.forum;
## --------- topics ---------
TRUNCATE `new-forum`.`phpbb_topics`;
ALTER TABLE `new-forum`.`phpbb_topics` ADD `topic_oldid` INT UNSIGNED DEFAULT '0' NOT NULL ;
ALTER TABLE `new-forum`.`phpbb_topics` ADD `topic_oldposter` INT UNSIGNED DEFAULT '0' NOT NULL ;
ALTER TABLE `new-forum`.`phpbb_topics` ADD `topic_oldforum` INT UNSIGNED DEFAULT '0' NOT NULL ;
INSERT INTO `new-forum`.`phpbb_topics` (topic_title,topic_poster,forum_id,topic_oldid,topic_oldposter,topic_oldforum)
SELECT title,postuserid,1,threadid,postuserid,forumid FROM `old-forum`.thread;
UPDATE `new-forum`.`phpbb_topics`,`new-forum`.`phpbb_users` SET `new-forum`.`phpbb_topics`.topic_poster = `new-forum`.`phpbb_users`.user_id
WHERE `new-forum`.`phpbb_topics`.topic_oldposter = `new-forum`.`phpbb_users`.user_oldid;
UPDATE `new-forum`.`phpbb_topics`,`new-forum`.`phpbb_forums` SET `new-forum`.`phpbb_topics`.forum_id = `new-forum`.`phpbb_forums`.forum_id
WHERE `new-forum`.`phpbb_topics`.topic_oldforum = `new-forum`.`phpbb_forums`.forum_oldid;
## --------- posts ---------
TRUNCATE `new-forum`.`phpbb_posts`;
ALTER TABLE `new-forum`.`phpbb_posts` ADD `poster_oldid` INT UNSIGNED DEFAULT '0' NOT NULL ;
ALTER TABLE `new-forum`.`phpbb_posts` ADD `topic_oldid` INT UNSIGNED DEFAULT '0' NOT NULL ;
INSERT INTO `new-forum`.`phpbb_posts` (forum_id,poster_id,poster_ip,post_time,post_approved,post_username,post_subject,post_text,bbcode_bitfield,bbcode_uid,poster_oldid,topic_oldid)
SELECT 1,userid,ipaddress,dateline,1,username,title,pagetext,'/8A=',1,userid,threadid FROM `old-forum`.post;
UPDATE `new-forum`.`phpbb_posts`,`new-forum`.`phpbb_users` SET `new-forum`.`phpbb_posts`.poster_id = `new-forum`.`phpbb_users`.user_id
WHERE `new-forum`.`phpbb_posts`.poster_oldid = `new-forum`.`phpbb_users`.user_oldid;
UPDATE `new-forum`.`phpbb_posts`,`new-forum`.`phpbb_topics` SET `new-forum`.`phpbb_posts`.topic_id = `new-forum`.`phpbb_topics`.topic_id
WHERE `new-forum`.`phpbb_posts`.topic_oldid = `new-forum`.`phpbb_topics`.topic_oldid;
UPDATE phpbb_posts P,phpbb_topics T SET P.forum_id=T.forum_id WHERE P.topic_id=T.topic_id;
## --- reg groups ---
INSERT INTO `phpbb_user_group` (group_id,user_id,group_leader,user_pending)
SELECT 2,U.user_id,0,0 FROM phpbb_users U
LEFT JOIN phpbb_user_group UG ON UG.user_id=U.user_id
WHERE UG.user_id IS NULL;
после чего надо в таблице форумов пробить поля left_id и right_id, у меня форумов было немного сделал вручную
далее выгружаем таблицу конвертированных постов и конвертим bbcodes
cat p1.sql | sed -f scr_posts.sed >p2.sql
--- scr_posts.sed ---
s/"/\"/gI
s/QUOTE/quote/g
#[=aaa;ddd]
s/\[quote=\(.*\);[0-9]*\]/\[quote="\1":1\]/gI
#[=]
s/\[quote=\([^]"]*\)\]/\[quote="\1":1\]/gI
# [="aaa]
s/\[quote="\([^]"]*\)\]/\[quote="\1":1\]/gI
s/quote\]/quote:1\]/gI
s/img\]/img:1\]/gI
s/url\]/url:1\]/gI
s/\[url="\([^]"]*\)"\]/\[url=\1:1\]/gI
s/\[url=\([^]"]*\)\]/\[url=\1:1\]/gI
###s/\[url[^]]*\]/\[url:1\]/gI
s/i\]/i:1\]/gI
s/u\]/u:1\]/gI
s/b\]/b:1\]/gI
s/"/\"/g
--- scr_posts.sed ---
если нужны bbcodes в сигнатурах пользователей, надо обработать таблицу пользователей аналогичным образом
в конце выносим созданные временные поля типа oldid
ALTER TABLE `phpbb_users` DROP `user_oldid` ;
ALTER TABLE `phpbb_forums` DROP `forum_oldid`;
ALTER TABLE `phpbb_topics` DROP `topic_oldid`, DROP `topic_oldposter`, DROP `topic_oldforum`;
ALTER TABLE `phpbb_posts` DROP `poster_oldid`, DROP `topic_oldid`;
Комментариев нет:
Отправить комментарий