[英]Beeline splits data row on csv export
我的 csv output 文件有幾行被分成兩個單元格,因為 Hive 表中的數據具有字符串條目;
導致分裂的符號。
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 '
我試圖改變 output 格式和字段大小但沒有成功。 行仍然被分成兩個單元格。
beeline -u jdbc:hive2://host:10000/default -n user -p xxxxx --silent=true --outputformat=csv -f sql_code.sql > output.csv
我希望我的行不被分成多個單元格。 這可以通過 escaping 來完成;
象征
'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”。默認情況下,分隔符是 pipe (|)。 您可以使用選項 --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 命令返回 4 行,與表中包含的相同:
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
以下查詢將用逗號分隔的字符串連接到 hive 中的單個列:
select col1, concat('"',col2,'"')col2, col3 來自表;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.