当前位置:首页 > Mysql教程 > 列表

infobright中数据导入与避免特殊字符的方法

发布:smiling 来源: PHP粉丝网  添加日期:2014-09-25 16:04:59 浏览: 评论:0 

infobright 是基于mysql的,但不装mysql亦可,因为它本身就自带了一个,mysql可以粗分为逻辑层和物理存储引擎,infobright主要实现的就是一个存储引擎,但因为它自身存储逻辑跟关系型数据库根本不同,所以,它不能像InnoDB那样直接作为插件挂接到mysql,它的逻辑层是mysql的逻辑 层加上它自身的优化器.

一,导入数据

1,IEE也支持mysqlloader和insert语句

2,默认Loader

ICE仅支持IB lorder,IEE默认使用的是是mysql loader,它能更多的容错,但速度稍慢,为了最快的导入,使用IB loader,做以下环境的设置:

  1. Mysql> 
  2.  
  3. set @bh_dataformat = ‘txt_variable’; 
  4.  
  5. –使用IB loader来导入CSV格式的变量定长文本 
  6.  
  7. set @bh_dataformat = ‘binary’; 
  8.  
  9. –二进制文件 
  10.  
  11. set @bh_dataformat = ‘mysql’; 
  12.  
  13. –使用mysql loader 

3,IB loader语法

IB仅支持load data infile,其他的mysql导入方式不支持,代码如下:

  1. LOAD DATA INFILE ‘/full_path/file_name’ 
  2.  
  3. INTO TABLE tbl_name 
  4.  
  5. [FIELDS 
  6.  
  7. [TERMINATED BY 'char'
  8.  
  9. [ENCLOSED BY 'char'
  10.  
  11. [ESCAPED BY 'char'
  12.  
  13. ]; 

导入前关闭:set AUTOCOMMIT=0;

完成后:COMMIT;set AUTOCOMMIT=1;

4,区域分隔符

.区域分隔符是可选的,默认设置为如下代码:

  1. CLAUSE DEFAULT VALUE 
  2.  
  3. FIELDS TERMINATED BY ‘;’ (semicolon) 
  4.  
  5. FIELDS ENCLOSED BY ‘”‘ (double quote) 
  6.  //phpfensi.com
  7. FIELDS ESCAPED BY ” (none) 

5,导入经验

a.当导入表格列数很多时,修改brighthouse.ini中LoaderMainHeapSize.

b使用并发导入.

c容忍性排序为txt_variables<binary<mysql

d bh_loader不支持多分隔符

e 大量数据时,DLP是必要选择

二,导入数据避免特殊字符问题

在用的是社区版的infobright,不支持DML功能,只能用LOAD DATA方式导入数据,如果元数据中有特殊控制字符,导入过程中经常会报错,很是恼火,应对策略有两种方法:

1.设置Reject File导入之前,设定 @BH_REJECT_FILE_PATH 和 @BH_ABORT_ON_COUNT 就可以忽略多少条导入失败的记录,并且将这些记录保存在指定文件,代码如下:

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%).

2.导出时指定结束符此外,还可以在导出数据时制定结束符,并且设定忽略哪些转义字符(、”、’ 等字符),例如:

select fields_list... into outfile '/tmp/outfile.csv' fields terminated by '||' ESCAPED BY '\' lines terminated by 'rn' from mytable;1.或者,将行间隔符设定为其他特殊标识,例如:select fields_list… into outfile ‘/tmp/outfile.csv’ fields terminated by ‘||’ ESCAPED BY ‘\’ lines terminated by ‘$$$$$rn’ from mytable;当然了,这种情况下,实际数据行中就不能存在 “$$$$$rn” 这个值了,否则会被当成换行标识.

Tags: infobright数据导入 infobright字符

分享到: