infinidb列式数据库,查询速度快。但维护速度慢,增删改 特别慢,不适合大数据量操作。
在mysql,大数据量查询慢,但维度快(增删改快)。
方案,mysql下,入库每天的数据,按天处理和维护数据。导入infinidb
一,连接数据库:navicat连接。建立mysql和infinidb的数据表结构。
mysql数据由kettle导入,并完成相关逻辑处理,如去重,去空等(复杂按经验分析)。
二,本机mysql倒出表
用kettle设计一个自动化部署,将mysql数据表导出成tbl格式文件。网上有smoodo @ freenode.net ##pentaho做的,infinidb export.kjb, 完成相关设置即可。
三,infinidb倒入数据库,运行infinidb的提供的开源shell脚本,自动导入。
1,windows下编写的shell脚本,放到linux下不能运行,要先dos2unxi转化。判断vim下,:%!xxd 看十六进制是否出现0a0d,对应为.。
2,注意,kette导出的tbl表,默认是用|作为delimiter。如果你的数据中包含|字符,就会出现错行。先go through 文件内容,确定不包含该delimiter,否则就要更换,配合hive首选\t。
3,infinidb倒库的shell脚本,放在/usr/local/calpont/data/bulk/data/import路径下。基本内容如下:
cd /usr/local/calpont/data/bulk/data/import;
/usr/local/calpont/bin/colxml aso1 -t dimappnamenew -d \t -j 1
/usr/local/calpont/bin/cpimport -j 1
(1)区分大小写,没-l,默认找dimappnamenew.tbl。-d \t是delimiter改成tab。
(2)一个shell脚本重复执行,会重复插入。只能执行一次。
(3)双引号无影响:/usr/local/calpont/bin/colxml aso1 -t dimappnamenew -l dimappnamenew.tbl -d \t -j 1 ,也能正确执行。
(4)shell脚本在不同路径下也能执行。前面的cd是为了让当前路径固定在指定路径下,修改后无影响,所以目前作用不清楚。(好像colxml会默认去找import路径下的文件,没时间去认证了。估计该也是该colxml文件里的配置参数)
(5)shell脚本按-j的配置生成job文件,在/usr/local/calpont/data/bulk/job下。-j是设置对应的job数,cpimport会完成指定的job,导入。
(6)colxml或者cpimport 加-h可以查看参数信息:
/usr/local/calpont/bin/colxml -h
显示如下
usage: colxml [options] dbname
options:
-d delimiter (default '|')
-e max error rows (numeric)
-h print this message
-j job id (numeric)
-l load file name
-n name in quotes
-p path for xml job description file that is generated
-s description in quotes
-t table name
-u user
-r number of read buffers (numeric)
-c read buffer size (numeric)
-w write buffer size (numeric)
-x extension of file name (default .tbl)
-e enclosedbychar (if data has enclosed values)
-c escapechar
-b debug level (1-3)
dbname - required parm specifying the name of the database;
all others are optional
example:
colxml -t lineitem -j 123 tpch
如具体的例子:
/usr/local/calpont/bin/colxml ssp_bi_cloud_saiku -x tbl -d \t -l dimad.tbl -j 1
/usr/local/calpont/bin/colxml ssp_bi_cloud_saiku -t dimad -x tbl -d \t -l dimad.tbl -j 1
/usr/local/calpont/bin/colxml ssp_bi_cloud_saiku -d \t dimad -j 1
最后,saiku连接:xml文件已建好,在linux下,放到saiku的安装目录下,看是否连接成功,能否使用。