繁体   English   中英

用直线引用 csv 输出

[英]Quoting csv output with 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"

但只能获得未引用的版本。

根据文档

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

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

注意:hdp 2.5 上的 hive 1.2.1。

你可以试试:

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

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

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

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

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

文档似乎对此也很清楚:

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

嵌入的双引号用前面的双引号转义。

这将起作用: env HADOOP_CLIENT_OPTS="-Ddisable.quoting.for.sv=false" beeline -u 'jdbc:hive2://localhost:10000/' --outputformat=csv2 -e 'select 1 as a, 2 as b '

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM