subaru的笔记2:bmf转smf——多少年前的老黄历了啊

TC14年前 (2012-06-23)网站与博客764
/*先将 bmb 下的 userlist, forumdata(复制之前 一定 重新编辑bmb版块所属分类), threads, posts 复制到smf数据库里,
这里设bmb的表前缀为gmly_,smf的表前缀为smf_ 转换所有表前请清空目标表原有内容*/
/*=======convert users(or members)=========
转换时忽略了用户所属的用户组(除管理员外),故需要重新在smf里设置版主等人员*/
TRUNCATE smf_members;
INSERT INTO smf_members
SELECT
    userid, username, regdate, postamount, IF(ugnum = 0,1,0) AS ID_GROUP,
    NULL, lastlogin, username, 0, 0, NULL, NULL, NULL, pwd,
    mailadd, NULL, 0, "0001-01-01", NULL, NULL, NULL,
    NULL, NULL, NULL, NULL, 0, 1, NULL, signtext, 0, NULL,
    0, 0, 0, NULL, 1, 1, 0, 2, NULL AS memberIP, pwdask,
    pwdanswer, 0, 1, NULL, 0, NULL, NULL, 0, 0, NULL
FROM gmly_userlist;
–=============转换分类============
/*准备工作
 1038107847    【本站站务】             11
 1090474717    【古墓丽影综合讨论】         12
 1090475426    【古墓丽影自制关卡讨论区】     19
 1090483164    【会员交流区】             20
 1094392525    【古墓玩家灵感空间】         21
 1094392531    古墓丽影1-3代             22
 1094392538    访客留言            23
 1094392539    会员相册            24
 1094392540    动作冒险            25
 1094392541    玩家攻略            26
 1124110813    【其他游戏】             27
*/
UPDATE gmly_forumdata2
SET forum_cid = 
WHERE forum_cid = ;
UPDATE gmly_forumdata2
SET id = 
WHERE id = ;
UPDATE gmly_threads2
SET forumid = 
WHERE forumid = ;
UPDATE gmly_posts2
SET forumid = 
WHERE forumid = ; 
—————————
TRUNCATE smf_categories;
INSERT INTO smf_categories
SELECT id, showorder, bbsname, 1
FROM gmly_forumdata
WHERE type = "category";
–================转换版块==================
/*之后可能还要在smf里重新编辑一下顺序。转换后的版块权限修改为smf默认的游客和正式会员都可以浏览,游客不能发帖*/
TRUNCATE smf_boards;
INSERT INTO smf_boards
SELECT 
    id, forum_cid, 0, 0, showorder, 0, 0, 
    "-1,0",    bbsname, cdes, topicnum,
    replysnum + topicnum, 0, 0, 0, 0 
FROM gmly_forumdata
WHERE type != "category";
–========convert topics===========
TRUNCATE TABLE smf_topics;
INSERT INTO smf_topics
SELECT
    t.tid AS ID_TOPIC, 0 AS isSticky, t.forumid AS ID_BOARD,
    MIN(p.id) AS ID_FIRST_MSG, MAX(p.id) AS ID_LAST_MSG,
    p.usrid AS ID_MEMBER_STARTED, 0 AS ID_MEMBER_UPDATED,
    0 AS ID_POLL, t.replys AS numReplies, t.hits AS numViews,    
    t.islock AS locked
FROM (gmly_threads AS t, gmly_posts AS p)
WHERE p.tid = t.id
GROUP BY t.id
HAVING ID_FIRST_MSG != 0
    AND ID_LAST_MSG != 0;
–=========convert posts(messages in smf)=========发帖心情全改为默认
/*看看
INSERT INTO smf_messages
SELECT 
    p.id, p.tid, p.forumid, p.timestamp, p.usrid,
    p.id, p.articletitle, p.username, u.mailadd,
    p.ip, 1, IF(p.timestamp = p.changtime, 0, p.changtime),
    REPLACE(p.other4, LEFT(p.other4, 17), ""),
    REPLACE(p.articlecontent, ‘<br>’, ‘<br />’), "xx"
FROM (gmly_posts AS p, gmly_userlist AS u)
WHERE u.userid = p.usrid;
注意上面这个=,由于发现在posts表里有一些usrid=0,这样where出来就没结果,这一行就会被跳过,
为了避免此种情况,我想是不是可以在用户表里间建一个id为零的,或者,用下面新方法*/
TRUNCATE TABLE smf_messages;
INSERT INTO smf_messages
SELECT 
    p.id, p.tid, p.forumid, p.timestamp, u.userid,
    p.id, p.articletitle, p.username, u.mailadd,
    p.ip, 1, IF(p.timestamp = p.changtime, 0, p.changtime),
    REPLACE(p.other4, LEFT(p.other4, 17), ""),
    REPLACE(p.articlecontent, ‘<br>’, ‘<br />’), "xx"
FROM (gmly_posts AS p, gmly_userlist AS u)
WHERE u.username = p.username;
–=============最后在smf后台 论坛维护 -> 一般维护 -> 重新计算论坛所有的统计资料
/////////
UPDATE gmly_forumdata2
SET id = 22
WHERE id = 1094392531;
UPDATE gmly_threads2
SET forumid = 22
WHERE forumid = 1094392531;
UPDATE gmly_posts2
SET forumid = 22
WHERE forumid = 1094392531; 
UPDATE gmly_forumdata2
SET id = 23
WHERE id = 1094392538;
UPDATE gmly_threads2
SET forumid = 23
WHERE forumid = 1094392538;
UPDATE gmly_posts2
SET forumid = 23
WHERE forumid = 1094392538; 
UPDATE gmly_forumdata2
SET id = 24
WHERE id = 1094392539;
UPDATE gmly_threads2
SET forumid = 24
WHERE forumid = 1094392539;
UPDATE gmly_posts2
SET forumid = 24
WHERE forumid = 1094392539; 
UPDATE gmly_forumdata2
SET id = 25
WHERE id = 1094392540;
UPDATE gmly_threads2
SET forumid = 25
WHERE forumid = 1094392540;
UPDATE gmly_posts2
SET forumid = 25
WHERE forumid = 1094392540; 
UPDATE gmly_forumdata2
SET id = 26
WHERE id = 1094392541;
UPDATE gmly_threads2
SET forumid = 26
WHERE forumid = 1094392541;
UPDATE gmly_posts2
SET forumid = 26
WHERE forumid = 1094392541; 
标签: 百度空间smf

相关文章

用CSS控制不同类型链接的显示

用CSS控制不同类型链接的显示

用CSS区分内外链接是我花了点力气才实现的,放到这里留个底,供自己和其他有此需要的站长和博客主参考。最初的目的是用css区分内外链接,给外链增加一个相应的图标后来发展为论坛、百科等也分出来了==不过图标制作不能,跟fz捣鼓不出什么结果,还是请jk出山了==/* links */a{backgrou...

数据库内容批量替换

数据库内容批量替换

其实以前也记过,不过当时出于谨慎采用了先备份再替换。现在越来越懒了,直接替换了。Wordpress要把图片的“aligncenter”批量替换成“alignnone”在表中输入SQL命令UPDATE wp_posts SET post_content = replace(post_content,&...

dokuwiki与smf用户的整合

dokuwiki与smf用户的整合

嗯……国内网站中,dw+smf应该是一个罕见的组合……所以,这一篇可能给我自己留底的意义大于给别人的参考……以前从网上down下来一个文件,是允许smf1.1和dokuwiki用户整合的一个php。不过我用的是smf2.0,所以要用这个文件的话必定是需要修改的。参考了dw论坛上的讨论进行了修改。修改...

搞定

搞定

无意中点了一下空间设置,看到“”,发现我这N久不登录百度,前几天一登录就删了好几个相册(和搜狐的重复了)的家伙居然是这三万分之一(难怪相册显示的“已用空间”一下子缩水了好多)……百度对我还真不错呀,输入“古墓丽影”,中文站还经常是排名第一的~~以后就用百度的东西了~~NT说:这么轻易就被收买啦?是啊...

让WordPress运行多个博客的插件:WP-Hive

让WordPress运行多个博客的插件:WP-Hive

WP-Hive这个插件,允许WordPress用户在只安装一个WordPress的情况下,却能建立和运行多个博客。所以,如果不是想建立一个多用户博客的话,杀鸡就不必用牛刀了,WordPress MU还是别折腾了。但使用WP-Hive的前提是你拥有至少一个属于自己的顶级域名。假设你已经安装了一个Wo...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法和观点。