sqoop import - 控制M字符

时间:2017-04-28 03:45:06

标签: special-characters sqoop

所有

使用sqoop import从DB2导入数据时,除了一个表之外,它在大多数情况下工作正常,内容中似乎有一些特殊字符(control-M = ^ M),因此在sqooping时,这些字符被处理作为换行符,因此它后面的所有内容都将出现在导入文件的下一行,这将影响一个错误记录后的所有记录。

我无法猜测如何修复导入?是否有任何狡猾的方式?

1 个答案:

答案 0 :(得分:0)

作为可能的解决方案,您可以删除导入查询中的特殊字符:

replace(replace(source_db_column,chr(13),''),chr(10), '') as source_db_column

在这种情况下,在sqoop获取数据之前,它将由源数据库完成。

另一种选择是使用--hive-drop-import-delims参数和sqoop import命令以及--map-column-java选项来指定该列的类型为String:

sqoop import
...
--hive-drop-import-delims 
--map-column-java your_column=String

还有一个选项是再次使用--hive-delims-replacement "some_character"--map-column-java your_column=String将特殊字符(\n , \t , and \01)替换为其他字符。