需求:将Oracle数据导入到hive。
问题:hive建表只是一个开始,需要替换默认的行列分隔符,如果设置的不合理,就会出现一个Oracle字段值拆分后存放到多个hive字段的情况。
结论:经过几番折腾,最终还是使用默认的列分隔符“\u0001”和行分隔符“\n”,不过需要在Oracle导入到hive之前替换掉默认分隔符为“ ”。
替换方法:
INSERT INTO newTableName
SELECT replace(replace(columnName, chr(1), ' '), chr(10), ' ')
FROM tableName;
除了标题开始符(“\u0001”,chr(1)),换行符(“\u0010”,chr(10)),有时候水平制表符(“\u0009”,chr(9))、回车符(“\u0013”,chr(13))也需要替换。