字符串和非字符串数据转换为' null'通过配置单元导出到Oracle表时为空字段

时间:2018-02-08 09:28:58

标签: hadoop hive sqoop impala

我是Hadoop的新手,我有一个场景,我必须使用sqoop export将数据集/文件从HDFS导出到Oracle表。该文件的值为' null'在它同样也是在表中导出。我想知道我们如何取代' null'导出时数据库中是否为空白?

File Structure- Sample record

2 个答案:

答案 0 :(得分:0)

在oracle中,空字符串和空值对varchars的处理方式相同。这就是Oracle在内部将空字符串转换为varchar的空值的原因。当''分配给char(1)时,它变成''(char类型是空白填充字符串)。看看Tom Kite对此的评价:https://asktom.oracle.com/pls/asktom/f?p=100:11:0%3a%3a%3a%3aP11_QUESTION_ID:5984520277372

请参阅本手册:https://www.techonthenet.com/oracle/questions/empty_null.php

答案 1 :(得分:0)

您可以在该过程中从hive / beeline创建TSV文件,您可以使用此/** * @ManyToOne(targetEntity="Cart", cascade={"all"}, fetch="EAGER") */

将空值添加为空白

示例:--nullemptystring=true

您可以使用sqoop导出中创建的文件导出到Oracle表。

您还可以使用Unix sed

替换文件中空白的空值

例如:beeline -u ${hhiveConnectionString} --outputformat=csv2 --showHeader=false --silent=true --nullemptystring=true --incremental=true -e 'set hive.support.quoted.identifiers =none; select * from someSchema.someTable where whatever > something' > /Your/Local/Location or EdgeNode/exportingfile.tsv