输入文件
11/24/2013,bank of nyc,withdrawl,deposit,in progress
11/16/2014,bank of dc,opeanig,closing,resolved
我希望他们在表格中
Date Bank name issue status
11/24/2013 bank of nyc withdrawl,deposit in progress
11/16/2014 bank of dc opeanig,closing resolved
答案 0 :(得分:1)
好吧,问题是逗号没有被转义...如果逗号是字符串或分隔符的一部分,hive应该如何知道?
如果你只能在一个已知列中有额外的逗号,就像在这种情况下,第三个。 然后,您可以编写一个正则表达式,在第二个逗号和最后一个逗号之间取任何内容,并将其与Regexp serde一起使用。 这适用于您的示例,因为只有'问题'可能有逗号。
CREATE TABLE csvsample(
date STRING,
bank_name STRING,
issue STRING,
status STRING
) ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
"input.regex" = "^([^,]+),([^,]+),(.+),([^,]+)$") ;
hive> select * from csvsample;
OK
11/24/2013 bank of nyc withdrawl,deposit in progress
11/16/2014 bank of dc opeanig,closing resolved