mysql数据仓库 infobright 数据导入

mysql 数据仓库 Infobright 数据导入

infobright 是 采用列存储引擎, 不需要索引、主键,性能很高, 亿级别数据 第一次查单挑数据耗时 1.6 秒。

数据导入 到 infobright

load data infile "/opt/sm_1.log" into table user_register fields terminated by '	'

不过数据量大的情况下,难免有部分数据有问题,以防导入出错,先设置 忽略错误条数 或 忽略百分比

/** 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 '	' enclosed by ‘NULL’ escaped by ‘\’ ;

字符串两边加 引号 “”

select * from user_register into outfile "/tmp/sm.log"  fields terminated by '	' 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'; 

参考资料:

  1. infobright的load加载
  2. infobright中导入数据避免特殊字符问题
  3. linux文件分割(将大的日志文件分割成小的)
  4. Infobright Tips
  5. infobright中数据导入与避免特殊字符的方法
  6. MySQL · 引擎特性 · Infobright 列存数据库
  7. Infobright ICE数据仓库在线实战手册
原文地址:https://www.cnblogs.com/xunux/p/7373643.html