如何将csv文件导出到具有逗号记录值的配置单元表中?

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

输入文件

11/24/2013,bank of nyc,withdrawl,deposit,in progress
   11/16/2014,bank of dc,opeanig,closing,resolved

我要他们在table上

Date           Bank name         issue                status 
  11/24/2013     bank of nyc     withdrawl,deposit     in progress
  11/16/2014     bank of dc      opeanig,closing       resolved
20jt8wwn

20jt8wwn1#

好吧,问题是逗号没有转义…hive怎么知道逗号是字符串的一部分,还是分隔符?
如果在一个已知列中只能有额外的逗号,这是可能的,就像在本例中的第三列一样。然后,可以编写一个正则表达式,该表达式接受第二个逗号和最后一个逗号之间的任何内容,并将其与regexp serde一起使用。这适用于您的示例,因为只有'issue'可能有逗号。

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

相关问题