用直线引用 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"
但只获取非引用版本。
根据 documentation:
The quoting can be disabled by setting the disable.quoting.for.sv system variable to 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 中的引用字段才 necessary/useful。
因此,如果您尝试编写 1 2,3
,则应引用最后一个值:1,"2,3"
.
引用一个字段并不意味着它应该被视为一个字符串。 "2,3"
仍然是一个数字(如果 ,
在这种情况下是小数点分隔符)。
一些 csv 作者在每个字段周围添加引号,这是完全没有必要的,只会使文件变大而没有任何好处。
文档似乎也很清楚这一点:
If quoting is not disabled, double quotes are added around a value if
it contains special characters (such as the delimiter or double quote
character) or spans multiple lines.
Embedded double quotes are escaped with a preceding double quote.
这将起作用:
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'
我正在尝试从直线获取带引号的 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:
The quoting can be disabled by setting the disable.quoting.for.sv system variable to 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 中的引用字段才 necessary/useful。
因此,如果您尝试编写 1 2,3
,则应引用最后一个值:1,"2,3"
.
引用一个字段并不意味着它应该被视为一个字符串。 "2,3"
仍然是一个数字(如果 ,
在这种情况下是小数点分隔符)。
一些 csv 作者在每个字段周围添加引号,这是完全没有必要的,只会使文件变大而没有任何好处。
文档似乎也很清楚这一点:
If quoting is not disabled, double quotes are added around a value if it contains special characters (such as the delimiter or double quote character) or spans multiple lines.
Embedded double quotes are escaped with a preceding double quote.
这将起作用: 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'