Home  >  Article  >  Database  >  infobright中导入数据避免特殊字符问题

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

WBOY
WBOYOriginal
2016-06-07 16:42:27907browse

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

目前在用的是社区版的infobright,不支持DML功能,只能用LOAD DATA方式导入数据。

如果元数据中有特殊控制字符,导入过程中经常会报错,很是恼火。应对策略有两种方法:

  • 设置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%)

  • 导出时指定结束符此外,还可以在导出数据时制定结束符,并且设定忽略哪些转义字符(\、”、’ 等字符),例如:
  • select fields_list... into outfile '/tmp/outfile.csv' fields terminated by '||' ESCAPED BY '\\'lines terminated by '\r\n' from mytable;
  • 或者,将行间隔符设定为其他特殊标识,例如:select fields_list… into outfile ‘/tmp/outfile.csv’ fields terminated by ‘||’ ESCAPED BY ‘\\’lines terminated by ‘$$$$$\r\n’ from mytable;当然了,这种情况下,实际数据行中就不能存在 “$$$$$\r\n” 这个值了,否则会被当成换行标识。

 


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn