我正在尝试将表导出到配置单元中的本地csv文件。
INSERT OVERWRITE LOCAL DIRECTORY '/home/sofia/temp.csv'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
ESCAPED BY '\\'
LINES TERMINATED BY '\n'
select * from mytable;
问题是某些值包含换行符“\n”,结果文件变得非常混乱。
在配置单元中导出时,是否有任何方法将值括在引号中,以便csv文件可以包含特殊字符(尤其是换行符)?
1条答案
按热度按时间dpiehjr41#
一个可能的解决办法是
Hive CSV SerDe (Serializer/Deserializer)
. 它提供了一种指定custom delimiters, quote, and escape characters
.限制:
它不能处理
embedded newlines
可利用性:这个
CSV Serde
在hive 0.14及更高版本中可用。背景:
这个
CSV SerDe
基于https://github.com/ogrodnek/csv-serde,并被添加到Hive
在hive-7777中的分布。用法:
这个
SerDe
对大多数人有效CSV data
,但不处理embedded newlines
. 使用SerDe
,指定完全限定类名org.apache.hadoop.hive.serde2.OpenCSVSerde
.原始文件可在https://github.com/ogrodnek/csv-serde.
默认分隔符、引号和转义字符(如果未指定)
参考:配置单元csv serde