Z-Blog博客转换到Blogger的方法

虽然Google的Blogspot在国内无法访问,但Blogspot依旧是国际上最大的BSP之一,其稳定性非常不错,并且完全免费,使用Z-Blog的用户,也可以通过一些方法将博客备份到Google Blogger,下面我就介绍一下如何将Z-Blog的博客转换到Google Blogger的方法。

这个方法针对大数据量的Z-Blog博客,首先通过SQL语句转换Z-Blog数据到MySQL数据库,之后在本地安装一个PHP+MySQL+Apache的系统,安装phpMyadmin和Wordpress程序,然后在phpMyadmin中建立一个blog_Article表,然后使用“ACCESS数据库转换MYSQL数据库的软件”将数据库转换到MySQL,然后直接在MySQL之中将blog_Article表的数据插入到wp_posts表中,这样就完成了Z-Blog的数据导出到Wordpress中。

接着登录本地的Wordpress系统,在“工具”-“导出”中,将文章导出为一个XML文件。

接着,就可以将WordPress博客转换到Blogger,进行转换之前,需要将WordPress导出的XML文件进行分割,推荐使用YO2的一个小工具DivXML来分割。

将文件分割为1M左右的XML文件后,就可以到Google Blog Converters提供的这个地址进行XML转换,将WordPress的XML文件转换为Blogger的XML文件。

拿到转换后的XML文件,登录Blogger后台,使用博客导入功能将这个XML文件导入到系统,文章和评论都会被导入进来。

导入之后,登录博客的域名管理系统,将博客的域名修改为CNAME的解析方式,指到ghs.google.com,这样,就实现了Z-Blog博客转换为Google Blogger系统。

最后,访问Google Blogspot的“设置”-“电子邮件和移动博客”,设置一个电子邮件发布地址(也称为 Mail2Blogger),然后在Z-Blog中启用Mailpost发送邮件插件,这样就可以实现Z-Blog的新文章也实时同步到Google Blogger上。

最终效果展示,我这里用“月光博客”做个了一个例子,将Z-Blog的数据,成功转换到了Blogspot的这个地址:http://info.williamlong.info/ 。

View the original article here

构建个人博客系统二(连接mysql数据库)

更正上文数据表设计细节不当,外键不能为NULL。

CREATE TABLE `article` (
  `id` INTEGER(11) NOT NULL AUTO_INCREMENT,
  `title` VARCHAR(20) COLLATE utf8_general_ci DEFAULT NULL,
  `content` TEXT COLLATE utf8_general_ci,
  `categoryid` INTEGER(11) NOT NULL,
  `createtime` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  `userid` INTEGER(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `userid` (`userid`),
  KEY `article_fk1` (`categoryid`),
  CONSTRAINT `article_fk` FOREIGN KEY (`userid`) REFERENCES `user` (`id`),
  CONSTRAINT `article_fk1` FOREIGN KEY (`categoryid`) REFERENCES `category` (`id`)
)ENGINE=InnoDB
AUTO_INCREMENT=4 CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'
COMMENT='InnoDB free: 4096 kB; (`userid`) REFER `sclblog/user`(`id`); (`categoryid`) REFE';

然后建立javabean,用来连接数据库。

package com.mycompany.db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DBUtil {
    public static Connection getConnection() {
        Connection conn = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager
                    .getConnection("jdbc:mysql://localhost:3306/sclBlog?user=root&password=root");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }
    public static Statement getStatement(Connection conn) {
        Statement stmt = null;
        try {
            if (conn != null) {
                stmt = conn.createStatement();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return stmt;
    }
    public static ResultSet getResultSet(Statement stmt, String sql) {
        ResultSet rs = null;
        try {
            if (stmt != null) {
                rs = stmt.executeQuery(sql);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return rs;
    }
    public static void close(Statement stmt) {
        if (stmt != null) {
            try {
                stmt.close();
                stmt = null;
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    public static void close(Connection conn) {
        if (conn != null) {
            try {
                conn.close();
                conn = null;
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    public static void close(ResultSet rs) {
        if (rs != null) {
            try {
                rs.close();
                rs = null;
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

建立一个servlet,测试

package com.mycompany.db;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class TestDb extends HttpServlet {
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        resp.setContentType("text/html;charset=gb2312");
        PrintWriter out = resp.getWriter();
        out.println("<table border=1>");
        out.println("<tr><td>Content:</td></tr>");
        Connection conn = DBUtil.getConnection();
        Statement stmt = DBUtil.getStatement(conn);
        String sql = "select * from article";
        ResultSet rs = DBUtil.getResultSet(stmt, sql);
        try {
            while (rs.next()) {
                out.println("<tr>");
                out.println("<td>" + rs.getString("title") + "</td>");
                out.println("</tr>");
            }
            out.println("</table>");
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtil.close(rs);
            DBUtil.close(stmt);
            DBUtil.close(conn);
        }
    }
}

web.xml 设置这个servlet。

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <servlet>
        <servlet-name>testDb</servlet-name>
        <servlet-class>com.mycompany.db.TestDb</servlet-class>
    </servlet>
    <servlet-mapping>
      <servlet-name>testDb</servlet-name>
      <url-pattern>/testDb</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

 

测试url:

http://localhost:8080/sclBlog/testDb

mysql建表示例代码

mySql主键和外键的建表语句示

create table threads(
id int(11),
title varchar(100),
content varchar(1000),
uid int(11),
bid int(11),
constraint pk_id primary key (`id`),
constraint fk_uid foreign key (`uid`) references `user`(`userid`), 
constraint fk_bid foreign key (`bid`) references `board`(`id`)
);

 

例:

mysql如何建立外键

一个主表blog博客表,
DROP TABLE IF EXISTS `blog`;
CREATE TABLE `blog` (
`id` int(11) NOT NULL auto_increment,
`title` varchar(11) default NULL,
`content` varchar(11) default NULL,
PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
另一个表comment,评论表
博客表和评论表关系是1:N

drop table comment;
create table comment(
id       int primary key,
user     varchar(11),
email    varchar(11),
url      varchar(11),
content  varchar(11),
addTime  date,
blog_id  int,
constraint FK_blog_id foreign key (blog_id) references blog(id)
)ENGINE=InnoDB DEFAULT CHARSET=gb2312;

注意,一定要varchar(11),要不然就错了,我是根据已有表导出sql才看出来的.

这个sql语句用sql-front导出后的结果是:

DROP TABLE IF EXISTS `comment`;
CREATE TABLE `comment` (
`id` int(11) NOT NULL,
`user` varchar(11) default NULL,
`email` varchar(11) default NULL,
`url` varchar(11) default NULL,
`content` varchar(11) default NULL,
`addTime` date default NULL,
`blog_id` int(11) default NULL,
PRIMARY KEY  (`id`),
KEY `FK_blog_id` (`blog_id`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;

ALTER TABLE `comment`
ADD FOREIGN KEY (`blog_id`) REFERENCES `blog` (`id`);

特些记录,以备忘记.