hive-load带特殊字符的分隔数据cause off position

lbsnaicq  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(496)

假设我想在配置单元中创建一个包含4列的简单表,并加载一些管道分隔的数据。

CREATE table TEST_1 (
COL1  string,
COL2  string,
COL3  string,
COL4  string
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '|'
;

原始数据:

123|456|Dasani Bottled \| Water|789

我对col3值的期望是“dasani瓶装水”,它在中间有一些特殊字符“\”,因此导致hive table column off位置从col3开始,因为我创建表时使用“\”作为分隔符。特殊字符\ |中确实有管道字符。
是否有任何方法可以解决此问题,以便配置单元可以正确加载数据?
谢谢你的帮助。

9rygscc1

9rygscc11#

您可以添加 ESCAPED BY 子句来允许字符转义

CREATE table TEST_1 (
COL1  string,
COL2  string,
COL3  string,
COL4  string
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '|' ESCAPED BY '\'
;

从配置单元文档
通过使用“escaped by”子句(例如由“\”转义)为分隔符字符启用转义如果要处理可以包含这些分隔符字符的数据,则需要转义。
也可以使用“null defined as”子句指定自定义空格式(默认值为“\n”)。

相关问题