Hive:解析管道划界数据,该数据还具有逃脱字符和其他特殊字符



我试图从 text文件中解析并加载以下数据到蜂巢外部表中。

ex。数据:

 "100'082 "|"ABC~01"|"Mana|ger1 "|"ABC01@m'a`il.com" 

使用以下查询:

create external table test3
(EmpID STRING, 
EmpName STRING, 
Designation STRING, 
Email STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe' 
WITH SERDEPROPERTIES  ('field.delim'='"|"')
STORED AS TEXTFILE
location '/home/hdp/samplefiles'
tblproperties ('skip.header.line.count'='1');

将数据加载到表中

| "100'082    | ABC~01         | Mana|ger1         | ABC01@m"a`il.com"  |

,但我想要这样的数据

| 100'082    | ABC~01         | Mana|ger1         | ABC01@m"a`il.com  |

在第1列开始时没有双引号,在第4列的末尾

使用打开的OpenCsvSerde代替多elimitserde。使用以下查询,它将按照问题的预期工作。

CREATE EXTERNAL TABLE test3 (EmpID STRING, 
EmpName STRING, 
Designation STRING, 
Email STRING) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' 
WITH SERDEPROPERTIES('separatorChar' = '||"|||"|"|"','quoteChar'= '"','escapeChar'= ',')
STORED AS TEXTFILE LOCATION '/home/hdp/samplefiles'
tblproperties ('skip.header.line.count'='1');

选择查询的结果将是:

hive> select * from test3;
OK
100'082        ABC~01  Mana|ger1      ABC01@m'a`il.com

最新更新