Typecho从MySQL数据库转SQLite数据库
2015-03-15
偶然间在苹果树下看到有这么一篇好文章,果断整理了一下,Mark啦。平时说实话虽然Typecho支持更加轻快sqlite数据库,但是为了方便搬家我还是选择了使用mysql数据库,而mysql数据库对于我这种喜欢买小内存低配置VPS(其实是贵的开销不起)的人来说,想要在VPS上面抛弃了还真的费力气,而现在有了这篇文章顿时拨云见日了,下面分享一下整理好的MySQL数据库转SQLite数据库过程吧。
一、MySQL数据的导出如果是一般的空间,通常使用phpMyAdmin来管理数据库,将typecho的数据库导出。
如果是LinuxVPS,除了phpMyAdmin之外你还可以选择直接使用linux命令导出,命令如下:
mysqldump -u root -p --compatible=ansi --skip-opt generator > dumpfile
二、数据的转换如果是采用第一种方法导出的,您可以使用 ESF Database Migration Toolkit – Professional进行转换,下载地址:
http://pan.baidu.com/s/1eQH3jJc
如果是采用linux vps直接导出文件来的方法,你可以尝试一下使用如下脚本:
#!/bin/bash if [ "x$1" == "x" ]; then echo "Usage: $0 " exit fi cat $1 | grep -v ' KEY "' | grep -v ' UNIQUE KEY "' | grep -v ' PRIMARY KEY ' | sed '/^SET/d' | sed 's/ unsigned / /g' | sed 's/ auto_increment/ primary key autoincrement/g' | sed 's/ smallint([0-9]*) / integer /g' | sed 's/ tinyint([0-9]*) / integer /g' | sed 's/ int([0-9]*) / integer /g' | sed 's/ character set [^ ]* / /g' | sed 's/ enum([^)]*) / varchar(255) /g' | sed 's/ on update [^,]*//g' | sed 's/\\r\\n/\\n/g' | sed 's/\\"/"/g' | perl -e 'local $/;$_=<>;s/,\n\)/\n\)/gs;print "begin;\n";print;print "commit;\n"' | perl -pe ' if (/^(INSERT.+?)\(/) { $a=$1; s/\\'\''/'\'\''/g; s/\\n/\n/g; s/\),\(/\);\n$a\(/g; } ' > $1.sql cat $1.sql | sqlite3 $1.db > $1.err ERRORS=`cat $1.err | wc -l` if [ $ERRORS == 0 ]; then echo "Conversion completed without error. Output file: $1.db" rm $1.sql rm $1.err else echo "There were errors during conversion. Please review $1.err and $1.sql for details." fi
三、修改typecho的配置文件以改用sqlite打开配置文件config.inc.php,我们可以看到原来MySQL的配置如下:
$db = new Typecho_Db('Mysql', 'typecho_'); $db->addServer(array ( 'host' => 'localhost', 'user' => '***', 'password' => '***', 'charset' => 'utf8', 'port' => '3306', 'database' => '***', ), Typecho_Db::READ | Typecho_Db::WRITE); Typecho_Db::set($db);
修改为下面这样的就可以了(如果是SQLite3请将Sqlite关键字修改为Pdo_SQLite)
$db = new Typecho_Db('SQLite', 'typecho_'); $db->addServer(array ( 'file' => '***', ), Typecho_Db::READ | Typecho_Db::WRITE); Typecho_Db::set($db);
到此这个过程就结束了,快来好好感受一把sqlite的轻快吧,学会这招以后就方便多了~
本文核心内容参考苹果树下,转载请注明本文链接!最近还在慢慢优化我的Y4CMS主题,也就是你正看到的这个,一步一步越来越顺手啦~