我试图从 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