SQLULDR2 :: 使用技巧 – 启用文件Gzip压缩功能来节约大量磁盘空间。

文本文件可能是最适合用来长期保存历史数据的方式,虽然信息检索上不是很方便,但对软硬件没有任何要求,所有的数据库都支持文件文件快速导入,并且可以得到非常好的压缩比来节约大量的磁盘存贮空间,实为上上之选。

SQLULDR2工具中包含了zlib-1.2.8压缩库,因此可以边导出数据边压缩,不需要先生成文件现来进行压缩。只要导出的文件名以“.gz”结尾,SQLULDR2就会启用压缩方式进行导出,并不需要设置其他的选项。Gzip算法历史优久,几乎所有的解压缩工具都支持它,综合来讲(从性能和压缩比来考量)是非常好的压缩算法。

$ sqluldr2 test/test query=t_test file=t_test.txt.gz
           0 rows exported at 2016-01-30 10:54:30, size 0 MB.
     1000000 rows exported at 2016-01-30 10:54:31, size 12 MB.
     2000000 rows exported at 2016-01-30 10:54:32, size 28 MB.
     2793168 rows exported at 2016-01-30 10:54:32, size 42 MB.
         output file t_test.txt.gz closed at 2793168 rows, size 42 MB.

有可能会比非压缩方式微慢一点点,取决于运行SQLULDR2工具的机器的CPU处理能力,在CPU较快的机器上基本上看不出来,个人觉得也许再过几年Gzip算法可以做到芯片里了。

$ sqluldr2 test/test query=t_test file=t_test.txt
           0 rows exported at 2016-01-30 11:09:18, size 0 MB.
     1000000 rows exported at 2016-01-30 11:09:19, size 12 MB.
     2000000 rows exported at 2016-01-30 11:09:19, size 28 MB.
     2793168 rows exported at 2016-01-30 11:09:20, size 42 MB.
         output file t_test.txt closed at 2793168 rows, size 42 MB.

在前面的例子中,压缩后的导出文件只有7MB大小,而原始的数据有42MB,我们节约了将近80%的空间。压缩比和具体数据的内容相关,不一定每次都有这么高的压缩比,至少可以节约一半左右的空间。

对于命令行中的“file”选项,可以用“%y”来表示年份,用“%m”来表示月份,用“%d”来表示日期,以便于在自动化脚本中自动按日期生成文件名。如下所示:

$ sqluldr2 test/test query=t_test file=t_test_%y%m%d.txt
           0 rows exported at 2016-01-30 11:13:36, size 0 MB.
     1000000 rows exported at 2016-01-30 11:13:36, size 12 MB.
     2000000 rows exported at 2016-01-30 11:13:36, size 28 MB.
     2793168 rows exported at 2016-01-30 11:13:37, size 42 MB.
         output file t_test_20160130.txt closed at 2793168 rows, size 42 MB.

如果指定“file”选项的值为“-”,则表示在屏幕(标准输出设备)上打印数据,以方便你使用管道(Pipeline)功能来做更复杂的处理。