zlib是一个比较通用的压缩库,通过在程序中引入zlib,可以方便的对数据进行压缩。今天花了点时间研究了一下,在tbuldr中实现了直接将数据库中的数据导出为gzip文件的功能。
下载zlib源代码,对于Linux,可以编译成静态库,然后将zlib.h,libz.a(如有必要,再加上zonf.h)和程序代码放置到同一个目录,编译的时候包含libz.a即可。
#./configure #make #make install
如果要编译成动态库,则只需要第一步改成./configure -s即可。
废话少说,下面是一段演示代码,非常简单:
#include <stdio.h>
#include "zlib.h"
int main()
{
char *data = "this is a gzip test from NinGoo.net";
gzFile *fp=NULL;
fp=gzopen("test_out.gz","wb");
gzwrite(fp,data,strlen(data));
gzclose(fp);
}
编译:
gcc -o test test.c libz.a
执行:
$./test $gzip -d test_out.gz $more test_out this is a gzip test from NinGoo.net
tbuldr中,只需要在file参数指定的文件名后面加上.gz,就会自动输出为gzip格式的文件。至此,tbuldr已基本实现了sqluldr2的全部功能,性能测试结果也不相上下了。
另外,zlib也可以在内存中对数据进行压缩和解压缩,参考:
http://hispider.googlecode.com/svn/trunk/devel/hispider/src/utils/zstream.c
用7z吧,支持多个文件,文件尺寸能超过4G
zlib也支持大于4gb的内容.
I want
unldr user=/ tables=t1,t2,t3
=>并行导出t1.txt t2.txt t3.txt
最后变成一个zip/7z
gzip 必须先tar
嗯,这个目前只能单个unload,然后手工来tar。后续可以考虑这个需求。
希望可以见到最新版本的代码,好好学习学。
@joey 这个工具已经比较长时间没有更新了,最新的一份代码可以通过这个地址下载 http://www.ningoo.net/software/tbuldr.tar.gz