如何将Oblog博客的内容转换到Z-BLOG

编程之家 jb51.cc 现在喜欢用Z-BLOG,于是就在本机先搭建了一个平台,等完成以后发现在一个问题,原来是使用的OBLOG的程序.网上并没有这两个博客互转的合适例子,所以就头疼了一把,经过自己一翻努力,呵呵终于成功了(不过不带TAG的内容,这个太麻烦了),现在我就把自己的操作方法说出来,大家按这个思路可以根据自己的情况改造一下.
首先先把它这个的ACCESS数据库导到MS SQL2000(或更高的版本中)中,如果没有你就自己写个ASP页面来处理吧,在导入完成后,就可以通过SQL语句来进行相互访问了.
这个是Z-BLOG主要的博客内容表(可以根据你自己想要的内容来增加):
SELECT LOG_CATEID,
       LOG_AUTHORID,
       LOG_LEVEL,
       LOG_TITLE,
       LOG_INTRO,
       LOG_CONTENT,
       LOG_IP,
       LOG_POSTTIME,
       LOG_VIEWNUMS,
       LOG_TAG,
       LOG_ISTOP
  FROM BLOG_ARTICLE

这个是你OBLOG的用户的博客内容(也可根据自己想要的内容来增加),记得查清你的用户编号,我想这个应该不难:
SELECT TOPIC,
       LOGTEXT,
       ADDTIME,
       TRUETIME,
       IIS,
       CLASSID,
       LOGTAGS,
       LOGTAGSID,
       ABSTRACT
  FROM OBLOG_LOG
 WHERE USERID = 2

好了两个主表都找到了,接下来要做的就是看看你的这两个博客里的分类是不是一样的,如果不一样,你最好列举一下它们的对应关系以便后面的CASE语句中用,接下来就是主要的改造语句:
INSERT INTO
       BLOG_ARTICLE(
       LOG_CATEID,
       LOG_ISTOP)
SELECT CLASSID=
  CASE CLASSID
       WHEN 3 THEN 1
       WHEN 23 THEN 3
       WHEN 2 THEN 4
       WHEN 4 THEN 5
       WHEN 14 THEN 8
       WHEN 1 THEN 8
       ELSE 7
  END,
       1,
       4,
       TOPIC,
       ABSTRACT,
       '127.0.0.1',
       0
FROM OBLOG_LOG
WHERE USERID = 2

以上为我的转换的例子,因为两个博客建的栏目不一样,所以我用CASE转换了一下,大家可以根据自己的栏目内容编号进行修改
我的OBLOG用户编号为2.如果大家在转换中遇到什么问题可以进行沟通。

另外还有部分要修改的就是原来OBLOG中的下载地址和Z-BLOG中的地址是不同的,如果你网站直接是根目录就直接换成下面的就好,如果是http://www.XXX.com/blog/这样的目录,建议你还要修改一下下面的存储过程.
--SELECT LOG_ID FROM BLOG_ARTICLE WHERE LOG_CONTENT LIKE '%UPLOADFILES/%'

--定义替换的字符串
DECLARE @S_STR VARCHAR(8000),@D_STR VARCHAR(8000)
SELECT @S_STR='UPLOADFILES/' --要替换的字符串
,@D_STR='/UPLOADFILES/' --替换成的字符串

--因为只能用PATINDEX,所以对于搜索字符串做处理
SET @S_STR='%'+@S_STR+'%'

--定义游标,循环处理数据
DECLARE @ID VARCHAR(500)
DECLARE #TB CURSOR FOR SELECT LOG_ID FROM BLOG_ARTICLE WHERE LOG_CONTENT LIKE '%UPLOADFILES/%'
OPEN #TB
FETCH NEXT FROM #TB INTO @ID
WHILE @@FETCH_STATUS=0
BEGIN
--字符串替换处理
DECLARE @P VARBINARY(16),@P1 INT,@P2 INT,@RPLEN INT,@STEP INT,@LEN INT

SELECT @P=TEXTPTR(LOG_CONTENT),@RPLEN=LEN(@S_STR)-2,@STEP=LEN(@D_STR),@P1=PATINDEX(@S_STR,LOG_CONTENT),@LEN=DATALENGTH(LOG_CONTENT),@P2=0 FROM BLOG_ARTICLE WHERE LOG_ID = @ID

WHILE @P1>0
BEGIN
SET @P2=@P1+@P2-1
UPDATETEXT BLOG_ARTICLE.LOG_CONTENT @P @P2 @RPLEN @D_STR
SELECT @P2=@P2+1,SUBSTRING(LOG_CONTENT,@P2+1,@LEN))FROM BLOG_ARTICLE WHERE LOG_ID = @ID
END

FETCH NEXT FROM #TB INTO @ID
END
CLOSE #TB
DEALLOCATE #TB

--显示结果
SELECT LOG_ID,LOG_CONTENT FROM BLOG_ARTICLE WHERE LOG_CONTENT LIKE '%UPLOADFILES/%'
GO

好基本上的工作已经完成,至于以前的TAG内容,大家都想想办法吧,这个的确有点难.最后再到Z-BLOG中把文件重新建立一下,相关于重新生成HTML文件.一切都完成了去看你的博客吧!

相关文章

我想将wordpress的默认接口路由改掉,愿意是默认的带一个 wp...
wordpress自定义分类法之后,我看到链接都自动在后面添加了一...
事情是这样的,我用 get_post_type 函数创建了一个自定义分类...
最近网站莫名其妙的被顶上了,过一个多小时,就注册一个账号...
最近服务器要到期了,就想着把网站转移到另外一台服务器,本...
今天在写wordpress的接口,然后碰到个奇怪的问题,怎么访问都...