Beeline 在 csv 导出时拆分数据行
Beeline splits data row on csv export
我的 csv 输出文件有几行被拆分成两个单元格,因为 Hive table 中的数据包含带有 ;
符号的字符串条目,这导致了拆分。
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'
您可以使用选项“--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');
Beeline命令即returns4行,与table中包含的相同:
beeline --color=true -u "jdbc..." --outputformat=dsv --delimiterForDSV=',' -f sql_code.hql > output.csv
有关详细信息,请查看下一个文档:https://cwiki.apache.org/confluence/display/Hive/HiveServer2+Clients#HiveServer2Clients-Separated-ValueOutputFormats
我的 csv 输出文件有几行被拆分成两个单元格,因为 Hive table 中的数据包含带有 ;
符号的字符串条目,这导致了拆分。
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'
您可以使用选项“--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');
Beeline命令即returns4行,与table中包含的相同:
beeline --color=true -u "jdbc..." --outputformat=dsv --delimiterForDSV=',' -f sql_code.hql > output.csv
有关详细信息,请查看下一个文档:https://cwiki.apache.org/confluence/display/Hive/HiveServer2+Clients#HiveServer2Clients-Separated-ValueOutputFormats