Hive - 具有特殊字符的加载分隔数据导致关闭位置

时间:2018-05-07 20:48:21

标签: sql hadoop hive delimiter pipeline

我想说我想在Hive中创建一个包含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 Bottled \ |水",它有一些特殊的字符" \ | "因此我在中间使Hive表列从COL3开始关闭位置,因为我使用" | "创建表。作为分隔符。 特殊字符\ |有一个管道其中的人物。

有没有办法解决这个问题,以便Hive可以正确加载数据?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您可以将ESCAPED BY子句添加到您的表创建中,以允许字符转义

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

来自Hive文档

  

使用' ESCAPED BY'为分隔符字符启用转义。   子句(例如ESCAPED BY' \')如果您愿意,则需要转义   使用可以包含这些分隔符字符的数据。

     

也可以使用' NULL DEFINED AS'来指定自定义NULL格式。   子句(默认为' \ N')。