Kettle 抽取导出hive 数据 到 文本文件问题——分隔符

Kettle 抽取导出hive 数据 到 文本文件问题——分隔符

Kettle 抽取导出hive 数据 到 文本文件问题——分隔符
表输入中遇到两个问题,1是 字段太长,无法识别,需要转换成String
2是 中文内容中有英文逗号,我选择英文逗号作为分隔符后导致不该被分割的内容被切开

Kettle 抽取导出hive 数据 到 文本文件问题——分隔符
Kettle 抽取导出hive 数据 到 文本文件问题——分隔符
Kettle 抽取导出hive 数据 到 文本文件问题——分隔符

所有需要注意的地方都用红框框了出来

注意kettle date类型导出来是2019/07/28 这种分隔符 所以要在文本文件输出指定格式
并且注意 更改原来自带的Timestamp 为Date 格式,否则hive映射会失败,显示NULL

最后说说今天学到的东西

本来觉得时间类型处理完毕,就可以高枕无忧了,结果英文逗号的问题出来了,问题的原因是源数据库的数据不规范,因此遇到下一个这样的工作,首先要做的就是研究原数据,每个字段的特点,数值类型,格式等。
由于录入数据的人在某一字段中输入了 英文逗号,导致我分割的时候出错

解决办法:

一、处理所有出现的英文逗号,替换成为中文逗号,后期再用英文逗号切割就成功了
hive 建表分隔符用英文逗号,这样就很顺利的映射。
二、换其他分隔符导出kettle,例如 | ; \ ~ 等
这种方法先用like 语句看下 某个字段是否存在这样的符号,没有的话就万事大吉
用 tab ^A等当分隔符导出文本数据后,hive并不能识别,原因未知。尝试失败。

最后回到了第一种方法

select replace(字段,‘,’,‘,’) from table
前面的逗号是英文 后面的逗号是中文,就替换成了中文,其他步骤跟之前相同。

谨记: 遇到工作先仔细想想,然后少量数据(10000条)导出,检查无误后再大规模操作。