我正在尝试从beeline获取带引号的csv输出。我的查询看起来像:beeline -u 'jdbc:hive2://localhost:10000/' --outputformat=csv2 -e 'set system:disable.quoting.for.sv=false; select 1 as a, 2 as b'
我希望作为输出
"a","b"
"1","2"
但是只能得到未引用的版本。
根据documentation:
我想我在这里做错了。如何将此变量设置为false?在我的查询中拥有它似乎并不能解决问题,在hive-site.xml上也没有。
注意:hdp 2.5上的 hive 1.2.1。
最佳答案
仅当字段包含分隔符或换行符时,才需要在csv中引用字段。
因此,如果您尝试编写1 2,3
,则应将最后一个值加引号:1,"2,3"
。
引用字段并不意味着应将其视为字符串。 "2,3"
仍然是数字(如果在这种情况下,
是小数点分隔符)。
一些csv编写器在每个字段周围都加上引号,这完全没有必要,只会使文件变大而没有任何好处。
该文档似乎对此也很清楚: