csv - Beeline 在 csv 导出时拆分数据行
问题描述
我的 csv 输出文件有几行被拆分为两个单元格,因为 Hive 表中的数据具有;
导致拆分的符号的字符串条目。
正确的行 'xxx-xxxxxx','value','NULL','value','v','value','value','1.0','value','0.0','value',value,'value ','价值' 奇数行 'xxx-xxxxx','value','NULL','value','v','value','value','value','value','value','value','value', '很长的名字; 奇数行的第二个单元格 ;很长的名字续','很长的名字'
我试图更改输出格式和字段大小,但没有成功。行仍然被分成两个单元格。
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 ','价值' 'xxx-xxxxx','value','NULL','value','v','value','value','value','value','value','value','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 命令返回 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
推荐阅读
- unit-testing - NestJS:如何在 canActivate 中模拟 ExecutionContext
- python - 使用 Python 3 从动态 HTML 表中提取数据
- java - 从双向链表中删除元素时出现空指针异常
- omnet++ - omnet++ 中的多阶段初始化如何工作
- jquery - Sequelize - 如何对连接表使用 where 子句
- node.js - 如何在 Node 中处理并发更新
- javascript - 如何允许获取 vue.js 到后端的 cors 策略?
- python - 使用 python 和 scrapy 以逗号分隔
- prolog - 如何在 Prolog 中解析文本的第一部分?
- json - json 加载 JSONDecodeError: Expecting ',' 分隔符