R’s Log

something about Ring & Cats

     

    f2blog 匯入 wordpress 之完全轉換

    才剛剛發表完一篇如何將f2blog的迴響資料利用資料庫的指令去轉入wordpress的資料表中,怎麼會又來一篇呢?

    其實是因為朋友在我轉完後,發現了個問題,就是如果你的網站的參觀量大、引用量多、或是文章連結常常出現在別人家的網誌裡(當然不是在說我….),因為f2blog匯入至wordpress的時候,整個編號都重新改過變成新的了,所以上面這些像是引用或是別人曾經發表過關於你的連結,也都會失效….也就是找不到文章。

    那這問題要如何解決呢?其實最快的方法,也最直接的方法,就是直接把wordpress的文章編號變成當初在f2blog裡面的編號,不就得了!這樣在拋轉迴響的時候,也不用做兩道手續去更新資料抓取對應了….

    所以我就整個重新拋轉了一次 @@

     

    先講一下拋轉前的環境,在做下面動作前,是必須先透過RSS匯入f2blog的文章至wordpress的資料表中,接下來就直接做下面的動作了

    1.新增欄位於wp_posts
     f2blog_id int(12)

    2.更新f2blog_id這個欄位資料,塞入f2blog_logs的id
    UPDATE (wp_posts LEFT JOIN f2blog_logs ON wp_posts.post_title = f2blog_logs.logTitle)
    SET wp_posts.f2blog_id = f2blog_logs.id
    WHERE f2blog_logs.id <> 125

    3.更新wp_post2cat的post_id,這是文章對應類別的資料表,先把這裡的編號整合更新
    UPDATE (wp_posts LEFT JOIN wp_post2cat ON wp_posts.ID = wp_post2cat.post_id)
    SET wp_post2cat.post_id = wp_posts.f2blog_id

    4.更新wp_posts的ID
    為避免編號重複,先將wp_posts的編號加個10000,如果你的文章超過一萬筆,那數字就自己多加幾個0吧
    UPDATE wp_posts SET ID = ID + 10000
    編號改完之後再來更新wp_posts的ID
    UPDATE wp_posts SET ID = f2blog_id WHERE post_type = 'post'

    5.轉換f2blog_comments時間欄位為varchar屬性
    ALTER TABLE `f2blog_comments` CHANGE `postTime` `postTime` VARCHAR( 100 ) NOT NULL DEFAULT '0'

    6.轉換f2blog_comments時間欄位的unixtime
    UPDATE `f2blog_comments` SET `postTime` = FROM_UNIXTIME(`postTime`)
    WHERE `f2blog_comments`.`id` >=1 LIMIT 99999

    7.轉換f2blog_comments時間欄位為datetime屬性
    ALTER TABLE `f2blog_comments` CHANGE `postTime` `postTime` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00'

    8.整理完畢開始拋轉f2blog→wp
    INSERT INTO wp_comments
    (comment_post_ID,comment_author,comment_author_email,comment_author_url,comment_author_IP,
    comment_date,comment_date_gmt,comment_content,comment_karma,comment_approved,comment_agent,
    comment_type,comment_parent,user_id)
    SELECT logId,author,email,homepage,ip,postTime,postTime,content,0,'1','','','0','0'
    FROM f2blog_comments

    9.更新wp的wp_post迴響數
    UPDATE (wp_posts LEFT JOIN f2blog_logs ON wp_posts.ID = f2blog_logs.id)
    SET wp_posts.comment_count = f2blog_logs.commNums

    10.刪除wp_posts的f2blog_id(12)這個欄位
    ALTER TABLE `wp_posts` DROP `f2blog_id`

    11.更新自動增加的wp_posts的數值(因為步驟4將此測定值變更了,所以要轉回來)
    SELECT max(ID) FROM wp_posts
    上面的指令執行完後,會出現一組數字,將數字填入下面最後的數字欄位中再執行
    ALTER TABLE wp_posts AUTO_INCREMENT =184

    這次多了三個步驟,因為除了文章的編號要更新,文章對應類別的資料表(wp_post2cat)內的文章編號也要更新,既然f2blog與wordpress兩邊的編號都已經整合同步,再匯入迴響資料的時候直接帶f2blog的文章編號就可以了,所以跑完上面這幾個步驟就整個完成了!

    用這種方式的好處呢,就是除了資料非常的完整之外,再也不用擔心別人家曾經連結過的資料會找不到網頁了,不過這好像還要做另外一道手續,這部份另外等專家來發表嚕!我的部分到這邊就完工啦!哇哈哈~~~

    Share and Enjoy:
    • Digg
    • del.icio.us
    • Facebook
    • Google
    • funP
    • Furl
    • Hemidemi
    • Live
    • Scoopeo
    • Technorati
    • TwitThis
    • YahooMyWeb
    • MyShare

    2 Responses to “f2blog 匯入 wordpress 之完全轉換”

    1. [ blog ] 從 F2blog 轉換資料到 WordPress Says:

      [...] Ring 求援,他抽空把 Memei BLog 的方式改善,並且記錄下 SQL 語法 以便日後轉換,透過他的方式我很成功的第一次把自己家庭用的 blog 轉換成 [...]

    2. 強森王 Says:

      天啊~會自己研究這些的女生很少見耶!難道你們一家子的 Wordpress 都是妳搞定的?

    Leave a Reply

    (To whisper, please log in!)

    Categories

    Archives

    Tag Clouds

    搜尋

    訂閱