2008.04.29 更新
已有F2blog to WordPress轉換程式,請見:F2Blog轉換Wordpress程式,以及F2blog的未來

歷經了三天不眠不休、夙夜匪懈、水深火熱,終於與好朋友Google大神一起完成了從F2blog轉移到Wordpress的艱鉅任務。

因為過程很複雜,幾乎是土法煉鋼慢慢轉,只能大略說一下過程:

  1. 在F2blog用RSS匯出後,以EmEditor開啟xml,執行巨集內容
  2. 匯入WP,發現迴響沒有匯入
  3. 用phpmyadmin,比對F2與WP的欄位、資料表名稱(只有兩個資料表要比對,f2blog_logs之於wp_posts,f2blog_comments之於wp_comments),交叉比對、修改,讓兩邊資料都相同–這邊是最久的部份,我有將卡最大的地方筆記下來(見附註)
  4. 修改完成把F2資料表匯入到WP的就完成了,我沒有注意到文章分類錯誤的問題,所以現在要把一千兩百多篇文章整理分類(囧),如果細心點可以避免

附註:

  • 轉換unixtime
    UPDATE `f2blog_comments` SET `postTime` = FROM_UNIXTIME( `postTime` ) WHERE `f2blog_comments`.`id` >=1 LIMIT 99999
    UPDATE `f2blog_logs` SET `postTime` = FROM_UNIXTIME( `postTime` ) WHERE `f2blog_logs`.`id` >=1 LIMIT 999999 ;
  • 複製文章發表時間至gmt欄位
    update `wp_posts` set `post_date_gmt`= `post_date`
  • 轉換unixtime之前先轉換欄位屬性
    ALTER TABLE `f2blog_comments` CHANGE `postTime` `postTime` VARCHAR( 100 ) NOT NULL DEFAULT '0'
  • 時間欄位轉換完成後必須改回datetime
    ALTER TABLE `f2blog_comments` CHANGE `postTime` `postTime` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00'
  • comment 狀態
    UPDATE `wp_comments` SET `comment_approved` = '1' WHERE `wp_comments`.`comment_ID` >=1 LIMIT 9999 ;
Author

現為網路社群行銷工作者。曾建立韓國部落格程式 Tatter Tools 臺灣中文社群、擔任 Mozilla Taiwan Firefox 社群版主與編輯 Wiki。熱愛學習語言藉以瞭解當地文化。現為 TutorABC / 巨匠 / 聯成外語學員,同時學習英文 (B2-C1) 與西班牙文 (A1)。 歡迎使用推薦人獎勵報名享折扣優惠,請跟業務報上我的 email: vsy.haha@gmail.com。

35 Comments

  1. 您好,我目前是F2的使用者
    我也一度有想把BLOG轉移到WP
    不過在網路上找到的辦法大多都是說無法匯入迴響的部份

    但是看到您所撰寫的教學
    似乎可以成功匯入迴響

    但是,您所撰寫的教學步驟
    有幾點小弟才疏學淺無法意會
    因為我只是個初學者而已啊~~

    是否可以請您在做個更簡單的說明呢?
    1.執行巨集內容
    我用EmEdit打開,裡面有巨集,但是不能執行?
    2.用phpmyadmin,比對F2與WP的欄位、資料表名稱
    請問是到我的網頁伺服器控制台去做比對嗎?
    又如何比對?
    我怕一個步驟錯誤,連帶之前的資料都跟著遺失了
    3.文章分類部份
    我打算把F2轉移到一個全新安裝的WP(剛安裝好,還沒新添文章)
    這樣我的文章分類、Tag也會順利轉移嗎?

    我的問題很多XD,還請賜教,謝謝~

  2. vsy Reply

    nonsense:
    你好,因為我使用的方法是非常非常笨的方法,所以步驟很多也不知道該怎麼寫詳細步驟…簡單說是把一支php程式可以做到的東西,直接在資料庫慢慢搬,建議對資料庫有懂一點點再使用

    1. 這步驟是可以跳過的,直接用phpmyadmin的方法即可

    2. 請一定要備份好原本的資料庫,有備分之後亂玩都可以:)
    比對的方法:
    假如 wp資料欄位是wp_comment,f2欄位是f2_comment,就把f2欄位修改成wp_comment
    假如 wp有ABCD欄位,f2沒有該欄位對應的值,那就補上一個空欄位
    以此類推,全部資料表都這樣修改,完成之後再將資料表名稱也改成與wp一樣
    這樣就完成了

    3. 文章分類理論上是可以順利轉移,因為我自己的轉換過程中漏了一點步驟,導致分類錯誤,所以我還是用手動把兩千三百多篇文章一個一個重新分類了Orz
    至於tag功能…我轉的時候wp的tag功能還在測試階段,所以就沒動它了,稍看了一下兩者結構不太一樣,所以可能要多費點心思轉移tag

  3. 功力太淺
    還是不太會轉換

    不過還是要說聲謝謝~~^^

  4. 學長 / 學姐, 我有成功換了
    不過有兩件事想確認

    1. 關於你附註那裡說的 update command, 我只要做那些嗎? 不用再update其他?

    2. 我wp和f2都update了, 我再把f2 export, 之後再import進去wp database
    我目前出現f2blog_xxxx和wp_xxxx兩張不同的table
    我該怎麼處理他們?要怎麼轉換?這一步我就不太明白了

  5. 還有一件事, 後來我再考慮的時候再參考這篇(先做了你那篇再做這篇)
    http://www.zhuaxia.com/item/489871383
    不知道怎樣..
    因為我對DB方面的轉換上有一些懷疑, 就是到底我的那些F2BLOG TABLE能不能刪
    或者到底我有沒有轉進去
    這也問題了留言那些東西有沒有轉入

  6. vsy Reply

    jwxie:
    1. 要喔要喔,因為這篇只是筆記性質,所以沒寫那麼多
    2. 這樣就完成了吧,照wp安裝方法直接用這個資料庫就可以了
    3. 兩邊的欄位(注意是資料表欄位)內容、排序、名稱等等都完全相同就可以了,先把資料庫跟wp連接看看有沒有出什麼問題,如果沒有問題,那f2 table就能刪掉了

  7. 我今天正式轉換一次
    發覺文章分類的問題:
    原本可以用這個來轉換
    UPDATE (wp_posts LEFT JOIN wp_post2cat ON wp_posts.ID = wp_post2cat.post_id)
    SET wp_post2cat.post_id = wp_posts.f2blog_id

    但可惜2.3.1的時候, 官方把post2cast給砍了
    mysql這方面, 我還是比較弱
    不知道學姐有沒有什麼idea改改?

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料