mysql数据仓库 infobright 数据导入
mysql 数据仓库 Infobright 数据导入
infobright 是 采用列存储引擎, 不需要索引、主键,性能很高, 亿级别数据 第一次查单挑数据耗时 1.6 秒。
数据导入 到 infobright
load data infile "/opt/sm_1.log" into table user_register fields terminated by '\t'
不过数据量大的情况下,难免有部分数据有问题,以防导入出错,先设置 忽略错误条数 或 忽略百分比
/** when the number of rows rejected reaches 10, abort process **/
set @BH_REJECT_FILE_PATH = '/tmp/reject_file';
set @BH_ABORT_ON_COUNT = 10;
# BH_ABORT_ON_COUNT 设定为 -1 的话,表示永不忽略。
也可以设置 BH_ABORT_ON_THRESHOLD 选项,该选项表示有最多多少百分比的数据允许被忽略,因此该选项的值是小数格式,例如 BH_ABORT_ON_THRESHOLD = 0.03(表示3%)
使用 split 命令进行大文件切割,参考: linux文件分割(将大的日志文件分割成小的)
split -l 30000000 sm_tmp.log sm_last_month_login_
以上是按 3千万 行一个文件切割,新文件名字为 sm_last_month_login_ + aa,ab,ac 以此类推
导出数据到文件
字符串不要被 "" 包围
select * from user_register into outfile "/tmp/sm.log" fields terminated by '\t' enclosed by ‘NULL’ escaped by ‘\\’ ;
字符串两边加 引号 “”
select * from user_register into outfile "/tmp/sm.log" fields terminated by '\t' enclosed by ‘“’ escaped by ‘\\’ ;
IB loader
ib loader 导入模式容错性差,我 导入几个 5g 的数据,有些文件能导入,有些始终导入不了,也不报错,卡在那不动了。
后来 换成 mysql 导入模式 成功了
-- 使用IB loader来导入CSV格式的变量定长文本
set @bh_dataformat = 'txt_variable';
-- 二进制文件
set @bh_dataformat = 'binary';
-- 使用mysql loader
set @bh_dataformat = 'mysql';