我有一张带有字段' str的表。 我跑的时候
select str from mytable where str is null
它打印为null。但是当我跑步时:
INSERT OVERWRITE LOCAL DIRECTORY "/path/to/dir"
select str from mytable where str is null;
有' \ N '
中的字符" /路径/到/ DIR"
我想知道是否有办法改变' \ N'将结果写入本地文件时,字符为空字符串。
答案 0 :(得分:2)
演示@AshishSingh回答
<强>蜂房强>
create table mytable (i int,j int,k int);
insert into mytable values (1,2,null),(null,5,null),(7,null,9);
select * from mytable
;
+-----------+-----------+-----------+
| mytable.i | mytable.j | mytable.k |
+-----------+-----------+-----------+
| 1 | 2 | NULL |
| NULL | 5 | NULL |
| 7 | NULL | 9 |
+-----------+-----------+-----------+
insert overwrite local directory "/tmp/mytable"
row format delimited fields terminated by "," null defined as ''
select * from mytable
;
<强>的bash 强>
cat /tmp/mytable/*
1,2,
,5,
7,,9
答案 1 :(得分:1)
使用: -
INSERT OVERWRITE LOCAL DIRECTORY "/path/to/dir"
ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t" NULL DEFINED AS ''
select str from mytable where str is null;
如果不需要,您可以删除FIELDS TERMINATED BY "\t"
答案 2 :(得分:0)
好吧,你总是可以使用CASE-WHEN语句:
SELECT CASE WHEN str is null then '' ELSE str END;
请记住,您可以使用此表属性更改处理空字段的方式:
“serialization.null.format”
答案 3 :(得分:0)
是的,需要小改动。您查询始终返回client_secret
结果,因此直接将null
放入文件。
" " (empty string)