[英]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.