我使用beeline从hive导出查询结果,这是我的命令:
beeline -u 'jdbc:hive2://myhost.com:10000/mydb;principal=hive/myhost.COM' --incremental=true --silent=true --outputformat=dsv --disableQuotingForSV=true --delimiterForDSV=\, --showHeader=false --nullemptystring=true -f myquery.hql --hiveconf DT_ID=${DT_ID} > ${spoolFile}
这是我的疑问:
SELECT id, concat('"',c_name,'"'), app_name from mytab where dt_id='${hiveconf:DT_ID}';
但是对于在列值中包含字段分隔符(,)的字段,我得到这样的结果:
66,**^@**"(Chat\, Social\, Music\, Utilities)"**^@**,Default
请注意 ^ @ 。为什么会这样?怎么能避免呢?这个角色是什么?如果它是引用,我将拥有它,以便我可以删除查询中的concat。我试过玩--disableQuotingForSV=true/false
。但这对我没有帮助。