pjblog是一代人的记忆了,是舍不得了,但是现在需要把金刀客博客搬到linux服务器,没办法,由于pjblog采用的是asp+access的架构,linux不支持asp语言,只能丢弃用了10多年的pjblog系统了。wordpress无疑是在linux中理想的博客系统,这几天研究了一下,把思路分享给大家。
这个工作的完成主要是蚊子开发了一个pj2wp工具mt.asp,这个工具主要就是把pjblog的数据库中网站目录,文章内容,查看数及评论弄成了两个文件。他这个工具号称是针对pjblog3,我的老博客也是pjblog3,但是用这个工具总是出错,仔细查看了一下,主要是pj博客的友情链接多了一个blog_LinkClass表,而我没有,有可能是我当时没有更新这个结构吧。
Set Rs = Nothing
‘创建友情链接分类
Set Rs = Conn.ExeCute(“Select LinkClass_Name, LinkClass_Title From blog_LinkClass Order BY LinkClass_ID Asc”)
If Rs.Eof Or Rs.Bof then
rands = randomnum
Str = Str & “INSERT INTO ” & Db & “terms(`name`,`slug`) VALUES (‘PJ未分类’,'” & Server.URLEncode(“PJ未分类”) & “‘);” & vbCrLf
Str = Str & “INSERT INTO ” & Db & “term_taxonomy(term_id,taxonomy,description) VALUES (‘” & rands & “‘,’link_category’, ”);” & vbCrLf
Str = Str & “update ” & Db & “term_taxonomy set term_id=(SELECT term_id FROM ” & Db & “terms WHERE name=’PJ未分类’) where taxonomy=’link_category’ and term_id='” & rands & “‘;” & vbCrLf
Else
Str = “”
Do While Not Rs.Eof
rands = randomnum
Str = Str & “INSERT INTO ” & Db & “terms(name,slug) VALUES (‘” & Rs(0) & “‘,'” & Server.URLEncode(Rs(0)) & “‘);” & vbCrLf
Str = Str & “INSERT INTO ” & Db & “term_taxonomy(term_id,taxonomy,description) VALUES (‘” & rands & “‘,’link_category’, ‘” & Rs(1) & “‘);” & vbCrLf
Str = Str & “update ” & Db & “term_taxonomy set term_id=(SELECT term_id FROM ” & Db & “terms WHERE name='” & Rs(0) & “‘) where taxonomy=’link_category’ and term_id='” & rands & “‘;” & vbCrLf
Rs.MoveNext
Loop
End If
所以这段代码可以丢掉,我当时没有仔细看,把 blog_LinkClass修改成了 blog_Links了事。一起打包到附件吧。
使用这个工具后,打开如下
把wp博客留言本id填上。这里有2个按钮,“提交”和“下载友情链接,留言等信息”。
点击“提交”按钮,将下载mt-export.txt这个文件,这个文件是所有博客文章内容信息。
这个文件的整理相当重要,不然导入wp后满是错误。
我总结了一下,需要替换的字符如下:[down][/down][mdown][/mdown][code][/code][quote][/quote],[color][/color][size][/size],都是pjblog的专用字符,全部要换成wp使用的格式。
然后在wp后台的“工具”-“导入”中使用“Movable Type 和 Typepad”导入即可。
点击““下载友情链接,留言等信息”下载文章的留言信息,之后会下载pjtowp.sql文件,之后在phpmyadmin的import中导入即可。
但是如果不经过整理,肯定错误一堆。
这个文件有好几个地方需要整理。
第一个,不能使用ASCII字符,
INSERT INTO wp_postmeta(`post_id`,`meta_key`,`meta_value`) VALUES ((SELECT ID FROM dk_posts WHERE post_title='What should I do now for futureV '),'views','3463');
全部要换成
INSERT INTO wp_postmeta(`post_id`,`meta_key`,`meta_value`) VALUES ((SELECT ID FROM dk_posts WHERE post_title=’What should I do now for future? ‘),’views’,’3463′);
不然遇到mysql&就出错。
基本原则就是需要和mysql中”post_title“字段数据一致,这样post_id不返回空就好了。
第二个,单条sql语句不要换行。
第三个,要去掉所有内容中的单引号,要转换成ASCII字符。mt.asp会自动转换,确保没有漏网之鱼就好了。