用直线引用csv输出

时间:2017-03-07 06:55:48

标签: csv hadoop beeline

我试图从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

  

可以通过将disable.quoting.for.sv系统变量设置为true来禁用引用。

我想我在这里做错了什么。如何将此变量设置为false?在我的查询中使用它似乎没有诀窍,也没有在hive-site.xml上。

注意:hdp 2.5上的hive 1.2.1。

3 个答案:

答案 0 :(得分:2)

当字段包含分隔符或换行符时,csv中的引号字段才是必需/有用的。

因此,如果您尝试撰写1 2,3,则应引用最后一个值:1,"2,3"

引用字段并不意味着它应该被视为字符串。 "2,3"仍然是一个数字(如果,在这种情况下是小数点分隔符。)

一些csv编写者在每个字段周围添加引号,这是完全没必要的,只会使文件变大而没有任何好处。

文档似乎也很清楚:

  

如果未禁用引用,则会在值if周围添加双引号   它包含特殊字符(例如分隔符或双引号)   字符)或跨越多行。

     

嵌入式双引号使用前面的双引号进行转义。

答案 1 :(得分:1)

您可以尝试:

beeline --disableQuotingForSV=true --verbose=true -u 'jdbc:hive2://localhost:10000/' --outputformat=csv2  -e 'select 1 as a, 2 as b'

答案 2 :(得分:0)

这将起作用: env HADOOP_CLIENT_OPTS =“-Ddisable.quoting.for.sv = false”直线-u'jdbc:hive2:// localhost:10000 /'--outputformat = csv2 -e'选择1作为a,选择2作为b'