您的位置:首頁 > 商業專區 > Discuz!專區 > Discuz!使用系列

Discuz!4.1多論壇數據庫手工合并全記錄

日期:2006-07-10 00:40:01 點擊: 來自:www.Discuz.net 作者:魚魚 阿賤

自己開始想建立個網站群,于是分別建立了三個論壇:一千零一夜娛樂論壇(http://bbs.1001year.net/)、寵物論壇(http://bbs.1001pet.com/)、美食論壇(http://bbs.1001cate.com/)。每個論壇定位詳細,分別面向不同的用戶群。三個論壇建立起來了,但是用戶并沒有完全遵照論壇定位發貼,并且會員的分散不利于網站運作,并在推廣和管理上增加了很多麻煩。
為了將資源集合在一處更好的進行推廣,今天決定將定將1001pet(源論壇)和1001cate(源論壇)合并到娛樂-1001year(目標論壇)中合并到一起,組成一個新的論壇。前提:數據不能丟失、用戶信息不能丟失。說干就干,現在開始吧。

工具:UltraEdit、PHPMYADMIN、MYSQL Administrator;
小貼士:為了保證數據的安全,魚魚建議大家將數據庫保存在本地機器來操作,以免由于誤操作造成對原論壇數據的損壞。

第一步:備份1001Year和1001Cate論壇的數據。
登錄后臺,將兩個論壇(1001Year和1001Pet)的數據庫分卷全部備份,并下載到本地。

第二步,建立兩個新論壇。
在本地配置PHP+MYSQL環境,并安裝UltraEdit、PHPMYADMIN、MYSQL、Administrator。然后新建兩個論壇1001Year和1001Cate,并將兩個數據庫分別恢復到兩個論壇中。

1:數據庫中主要表格的作用。
cdb_buddys           好友信息表
cdb_favorites       個人收藏信息表
cdb_memberfields 用戶擴展信息數據表
cdb_members       用戶基本信息數據表
cdb_onlinetime     在線時間信息表
cdb_polls               投票帖子信息表
cdb_threads               主題帖子信息表
cdb_threadsmod  主題操作記錄信息表
cdb_posts                帖子信息表
cdb_ratelog                帖子評分記錄信息表
cdb_attachments  附件信息表
cdb_forumfields    論壇擴展信息數據表
cdb_forums           論壇基本信息表
cdb_moderators   斑竹信息數據表
cdb_pms                短信數據表
cdb_forumlinks      友情連接數據表
cdb_admingroups  管理組數據表
cdb_usergroups    用戶組數據表

解釋:在這里面,關鍵的就是cdb_members,cdb_memberfields,cdb_onlinetime,cdb_threads和cdb_posts。

2:由于三個論壇都同,很多會員在三個論壇上都進行了注冊,包括魚魚也是這樣。但是會員中不允許有重名的,在合并中如果不注意此點將導致部分信息重疊丟失。還好,魚魚的三個論壇都不大,魚魚方法是在會員注冊的地方,一個一個試重名,試到重名的就記錄下來,然后進行對用戶名略做修改,并通知用戶。期望,Discuz!寫一個專門用來檢測重名的PHP程序,給予合并論壇中幫助。

第三步:合并數據庫。
備份數據的時候,盡量只備份有內容帖子的數據。為了避免麻煩,把2級目錄的東西都轉到了1級論壇下,這樣合并的時候,在目標論壇上就不用建立太多版塊。
1:在1001Year中建立1001cate和1001pet的板塊,然后記錄1001cate和1001pet在1001year論壇對應的fid(就是版塊號,鼠標放到論壇首頁各個版塊的文字上面就可以在狀態欄看到版塊號了)。
本步驟解釋:為了帖子準確和不出現錯誤,必須將所有板塊全部記錄完整,為了帖子對應,一定要詳細。
2:因為還牽扯到會員重名的問題,畢竟我們都不會PHP只能手動操作,數據大的論壇最好找個高手寫個程序檢測。
在檢測完會員后,需要升級數據庫,如下:
CODE:
[Copy to clipboard] <http://www.discuz.net/thread-281886-1-2.html###>
UPDATE `cdb_members` SET `username` = '臭魚old' WHERE `username` = '臭魚';
本步驟解釋:這里是將會員里叫“臭魚”的用戶改名為“臭魚old”,用戶名任意,在此只是舉例。
3:
1)數據庫升級一:主題+帖子+會員+附件的升級。
注意:這里所說的數據庫升級,都是在原論壇進行的!因為要把數據合并到目標論壇,保持目標論壇數據不動。
也就是上面所說的那些重要的表,代碼如下:
 CODE:
[Copy to clipboard] <http://www.discuz.net/thread-281886-1-2.html###>
UPDATE cdb_memberfields SET uid=uid+1839;
UPDATE cdb_members SET uid=uid+1839;
UPDATE cdb_threads SET authorid=authorid+1839;
UPDATE cdb_posts SET authorid=authorid+1839;
UPDATE cdb_threads SET tid=tid+3522;
UPDATE cdb_posts SET tid=tid+3522;
UPDATE cdb_posts SET pid=pid+23397;
UPDATE cdb_attachments SET tid=tid+3522;
UPDATE cdb_attachments SET pid=pid+23397;
UPDATE cdb_attachments SET aid=aid+8000;

當然,這里你要根據你目標論壇的會員數、主題數、帖子數和附件數量進行設置,比如:
CODE:
[Copy to clipboard] <http://www.discuz.net/thread-281886-1-2.html###>
UPDATE cdb_memberfields SET uid=uid+1839;
根據我的目標論壇的會員數,最后一個UID是1839,這樣升級的時候就將源論壇里的UID全部加1839。其他表內的數據也是根據這個來的,包括發貼量、主題數,都可以在你論壇看到。附件可以在后臺查看ID號。
2)數據庫升級二:版塊的升級。
這里說的版塊的升級,就是為了將源論壇的版塊對應目標論壇新建的版塊。代碼如下:
 CODE:
[Copy to clipboard] <http://www.discuz.net/thread-281886-1-2.html###>
UPDATE cdb_threads SET fid=105 WHERE fid=41;
UPDATE cdb_threads SET fid=106 WHERE fid=42;
UPDATE cdb_threads SET fid=107 WHERE fid=27;
UPDATE cdb_threads SET fid=109 WHERE fid=38;
UPDATE cdb_threads SET fid=108 WHERE fid=34;
UPDATE cdb_threads SET fid=110 WHERE fid=13;
UPDATE cdb_threads SET fid=113 WHERE fid=17;
UPDATE cdb_threads SET fid=112 WHERE fid=16;
UPDATE cdb_threads SET fid=111 WHERE fid=15;
UPDATE cdb_threads SET fid=115 WHERE fid=43;
UPDATE cdb_threads SET fid=114 WHERE fid=19;
UPDATE cdb_threads SET fid=116 WHERE fid=14;
UPDATE cdb_threads SET fid=117 WHERE fid=23;
UPDATE cdb_threads SET fid=118 WHERE fid=25;
UPDATE cdb_threads SET fid=119 WHERE fid=26;
UPDATE cdb_posts SET fid=105 WHERE fid=41;
UPDATE cdb_posts SET fid=106 WHERE fid=42;
UPDATE cdb_posts SET fid=107 WHERE fid=27;
UPDATE cdb_posts SET fid=109 WHERE fid=38;
UPDATE cdb_posts SET fid=108 WHERE fid=34;
UPDATE cdb_posts SET fid=110 WHERE fid=13;
UPDATE cdb_posts SET fid=113 WHERE fid=17;
UPDATE cdb_posts SET fid=112 WHERE fid=16;
UPDATE cdb_posts SET fid=111 WHERE fid=15;
UPDATE cdb_posts SET fid=115 WHERE fid=43;
UPDATE cdb_posts SET fid=114 WHERE fid=19;
UPDATE cdb_posts SET fid=116 WHERE fid=14;
UPDATE cdb_posts SET fid=117 WHERE fid=23;
UPDATE cdb_posts SET fid=118 WHERE fid=25;
UPDATE cdb_posts SET fid=119 WHERE fid=26;

例如:UPDATE cdb_threads SET fid=105 WHERE fid=41;
41是源論壇的fid號,105即目標論壇新建的同樣版塊的fid號。

提示:以上的數據庫升級,都是在源論壇操作,而不是在要合并到的目標論壇中操作。

4:數據升級完以后該合并了,這里用到了UE。
把合并完的數據,用4.1或者PHPMYADMIN的備份功能,將單獨的表備份出來。例如:我先合并會員,就備份出cdb_memberfields表和cdb_members表。
然后用UE打開,將源論壇中的數據復制到目標論壇的數據。例如:會員的合并。
在源論壇的數據庫中查找cdb_memberfields,下面的INSERT INTO的內容,直到-- 表的結構 `cdb_members`前,全都是。全部復制,然后粘貼到目標論壇的cdb_memberfields表的最后。其他表的操作同上。按照此操作,將帖子、主題、附件等信息全部合并。

第四步:恢復數據。
至此,所有數據已經合并成功。推薦用PHP MYADMIN或者MYSQLTOOL還原到目標論壇。

More..素材圖片 Picture Navigation
Discuz!使用系列熱門 Class Hot
Discuz!使用系列推薦 Class Commend
版權所有:中國網站資源 2005- 未經授權禁止復制或建立鏡像 This Site Tech:XHTML+DIV+CSS+Javascript
CopyRight ® 2005- www.yndjjj.com online services. all rights reserved. ICP06016627
Optimized to 1024x768 to Firefox,Netscape,Opera,MS-IE6+.
中扑网 <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>