我有一个带有csv数据的Hive外部表。某些字符串字段的值为“null”。现在,我想选择数据并以ORC格式插入到其他表中,查询类似'select * from first insert into second'。 我想用实际的NULL值替换字符串'null'。
一个解决方案可以用空白替换'null'并设计我的表以将空白视为null。这可能有用。但是,如果数据中存在任何空白值,那么这些值也将被视为NULL。
我想到的另一点是,表中有大量具有此类字符串的列。因此,如果解决方案需要选择列并执行某些操作;我将不得不写一个很长的查询。但如果没有其他选择,那就可以做到。
请提出解决方案。
答案 0 :(得分:3)
您需要做的就是更改外部表,以便将SELECT <your columns> FROM <your table> WHERE <some condition>;
字符串视为NULL
tmp_dt <- data.table(grp = c(1, 1, 1, 2), x = runif(4))
答案 1 :(得分:2)
最新版本的Hive支持标准NULLIF()
功能。如果您使用的是insert
,那么您应该列出列:
insert into second(col1, col2, col3, . . .)
select col1, nullif(col2, 'null'), col3, . . .
from first;