将输出发送到csv时,配置单元中以逗号分隔的sql列表变成两列

r7s23pms  于 2021-06-26  发布在  Hive
关注(0)|答案(2)|浏览(308)

我在配置单元中有一个表,其中有一个列表-使用collect\u set创建。当我查询表并将输出发送到csv文件时,列表将变为不同的列,而不是一列。
查询

hive - e "Select col1 from table" | sed 's/[\t]/,/g'  > output.csv

当前csv输出有两列,如下所示

col1         col2
 ["Apple"      "Mango"]
 ["Apple"      "Pineapple"]
 ["Orange"     "Mango"]
 ["Apple"      "Mango"]

如何将文件输出为列col1:

col1
 ["Apple","Mango"]
 ["Apple","Pineapple"]
 ["Orange","Mango"]
 ["Apple","Mango"]
enxuqcxy

enxuqcxy1#

以下是您在“当前csv”上的命令输出:

col1,       col2
["Apple",   "Mango"]
["Apple",   "Pineapple"]
["Orange",   "Mango"]
["Apple",   "Mango"]

在每个字段之间,有一个制表符和3个空格。所以空格不能用逗号代替。如果你只是想把多余的空间移走,你也可以试试

hive - e "Select col1 from table" | sed 's/[\t]/,/g' | sed 's/ *//g'  > output.csv

输出:

col1,col2
["Apple","Mango"]
["Apple","Pineapple"]
["Orange","Mango"]
["Apple","Mango"]

不确定这是否是您想要的,但这将删除额外的空间。您仍将有两个列标题。在逗号分隔的文件中,您的列由逗号分隔,因此这仍然是2列。

voase2hg

voase2hg2#

我找到了一种使用配置单元查询的方法

hive - e "Select concat_ws('\\;',col1) as col1 from table" | sed 's/[\t]/,/g'  > output.csv

我用分号分隔列表中的元素

相关问题