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