1.问题
在hive表student中, name字段类型为String,其名字中含有 NUL(这是一个特殊字符) ,导致导出数据错位,会报错 numberFormatException等.
2.在文本中NUL的表现形式
2.1.hive中字符串类型的NUL在hdfs上的数据,用nodepad打开 是NUL,这和hive中的NULL值在hdfs上是 \N不一样
2.2.将hive字符串中包含NUL的数据通过dbeaver导出成hiveSql,用nodepad查看,能够看到不可见字符NUL
2.3 hive字符串中包含NUL的数据直接通过dbeaver查看,是看不到的
3.如何替换掉字符串中的NUL特殊字符
3.1 NUL在nodepad中如何替换
将查找模式改为正则表达式,输入\x00 ,即可搜索到NUL,可以替换成’’
3.2 hiveSql中如何替换
将NUL替换掉
select regexp_replace(STUDENT_NAME,'\\x00','') from ods.student_table;
注意 '\x00' 需要加一个转义符\,正则中写'\\x00'