直线分割csv导出上的数据行

lnxxn5zx  于 2021-06-27  发布在  Hive
关注(0)|答案(1)|浏览(425)

我的csv输出文件中只有很少的行被拆分为两个单元格,因为配置单元表中的数据有带有 ; 导致分裂的符号。

PROPER ROW
'xxx-xxxxxx','value','NULL','value','v','value','value','1.0','value','0.0','value',value,'value','value'

ODD ROW
'xxx-xxxxx','value','NULL','value','v','value','value','value','value','value','value','value','VERY LONG NAME; 

SECOND CELL OF ODD ROW
 ;VERY LONG NAME CONTINUED','VERY LONG NAME '

我试图改变输出格式和字段大小,但没有成功。行仍被拆分为两个单元格。

beeline -u jdbc:hive2://host:10000/default -n user -p xxxxx --silent=true --outputformat=csv -f sql_code.sql > output.csv

我不希望我的行被分割成多个单元格。这可以通过逃逸来实现 ; 符号

'xxx-xxxxxx','value','NULL','value','v','value','value','1.0','value','0.0','value',value,'value','value'

'xxx-xxxxx','value','NULL','value','v','value','value','value','value','value','value','value','VERY LONG NAME VERY LONG NAME CONTINUED','value'
wd2eg0qa

wd2eg0qa1#

您可以使用选项“--outputformat=dsv”。默认情况下,分隔符是管道(|)。您可以使用选项--delimiterfordsv=','来更改它。
下一个例子是:

create table temp.test_name           (                                                                                                                                                                                     
first_name  string
,last_name  string
,zipcode   string
)
partitioned by (part string)
stored as parquet location '../temp.db/test_name' tblproperties("parquet.compression=SNAPPY")
;

insert into temp.test_name partition(part='A') values
('David','David','00')
,('Ellen', 'Ellen','00')
,('David','David','00')
,('David', 'VERY LONG NAME; VERY LONG NAME CONTINUED','00');

返回4行的beeline命令,与表中包含的相同:

beeline --color=true -u "jdbc..." --outputformat=dsv --delimiterForDSV=',' -f sql_code.hql > output.csv

有关更多信息,请查看下一个文档:https://cwiki.apache.org/confluence/display/hive/hiveserver2+clients#hiveserver2clients-分隔的valueoutputformats

相关问题