我以前曾经介绍过将 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 文件的方式进行转换。