我以前曾經介紹過將 Z-Blog 資料庫轉換到 WordPress 的 SQL 語句,做為反例,還會有從 WordPress 系統轉換到 Z-Blog 系統的 SQL 語句,這是一個比較奇怪的話題,估計也很少有人這麼做,不過對於某些特殊情況,我們有可能會將 WordPress 資料庫轉換到 Z-Blog 的 Access 資料庫,這裡我介紹一下手動使用 SQL 語句進行轉換的方法。

首先在 WordPress 中建立一個和 Z-Blog 文章表、目錄相同結構的表,建立的 SQL 語句如下:

CREATE TABLE blog_Article (

log_ID int NOT NULL ,

log_CateID int NULL ,

log_AuthorID int NULL ,

log_Level int NULL ,

log_Url varchar (255) NULL ,

log_Title varchar (255) NULL ,

log_Intro longtext NULL ,

log_Content longtext NULL ,

log_IP varchar (15) NULL ,

log_PostTime datetime NULL ,

log_CommNums int NULL ,

log_ViewNums int NULL ,

log_TrackBackNums int NULL ,

log_Tag varchar (255) NULL ,

log_IsTop varchar (10) NOT NULL

) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

CREATE TABLE blog_Category (

cate_ID int NOT NULL ,

cate_Name varchar (50) NULL ,

cate_Order int NULL ,

cate_Intro varchar (255) NULL ,

cate_Count int NULL

) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

由於 Z-Blog 的資料庫結構相對 Z-Blog 要複雜的多,因此轉換之前還要進行一些目錄 ID 的處理,其 SQL 語句如下:

update wp_posts, wp_term_relationships set wp_posts.post_category = wp_term_relationships.term_taxonomy_id where wp_posts.id=wp_term_relationships.object_id and wp_term_relationships.term_taxonomy_id in (select term_taxonomy_id from wp_term_taxonomy where taxonomy ='category')

這個語句將目錄 ID 儲存到了 wp_posts 表中,這樣以後轉換會方便一些。

接下來,執行下面的語句,轉換文章表結構。

INSERT INTO blog_Article (log_ID,log_CateID,log_AuthorID,log_Level,log_Url,log_Title,log_Intro,log_Content,log_PostTime,log_CommNums) select id, post_category, post_author, 4, id, post_title, post_excerpt, post_content, post_date, comment_count from wp_posts

轉換成功後,我們需要安裝一個 MYSQL 工具,名字叫 MySQL ODBC Connector,安裝完成後,在 ODBC 中建立一個 MySQL 的資料來源。

最後,開啟 Access 檔案,點“ 獲取外部資料”-“ 匯入”,選擇“ODBC 資料庫” 中的 MySQL 資料來源,匯入 blog_Article 表即可,這樣就可以將 WordPress 的文章內容匯入到 Z-Blog 中了。

以上方法直接使用 SQL 語句轉換資料庫結構,適合大量資料的匯入匯出。少量資料可以透過匯出 XML 檔案的方式進行轉換。