infobright中导入数据避免特殊字符问题

来源:互联网 发布:淘宝总部大楼图片 编辑:程序博客网 时间:2024/06/08 03:17

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

1.设置Reject File

导入之前,设定@BH_REJECT_FILE_PATH和@BH_ABORT_ON_COUNT就可以忽略多少条导入失败的记录,并且将这些记录保存在指定文件/** 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%)

2.导出时指定结束符

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

select fields_list... into outfile '/tmp/outfile.csv' fields terminated by '||' ESCAPED BY '\\' lines terminated by '\r\n' from mytable;

1.或者,将行间隔符设定为其他特殊标识,例如:

select fields_list ... into outfile '/tmp/outfile.csv' fields terminated by '||' ESCAPED BY '\\' lines terminated by '$$$$$' from mytable;

当然了,这种情况下,实际数据行中就不能存在"$$$$$"这个值了,否则会被当成换行标识。

原创粉丝点击