为什么在mysql中hive没有用like括起来的字段呢?

zlhcx6iw  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(312)

我的情况是:
输入行:

"vijay" <\t> "a-b-c","a-c-d","a-d-c" 

"kumar" <\t> "a-b-c","b-c-d""

我创建了如下表:

hive >create table user_infos(name string, path ARRAY<String>  --i need array only)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' COLLECTION ITEMS 
TERMINATED BY ',' LINES TERMINATED BY '\n' STORED AS TEXTFILE ;

接收到的输出:

hive > select * from user_infos ;

"vijay"       ["**\"a-b-c\"**","**\"a-c-d\"**","**\"a-d-c\"**"]

"kumar"       ["**\"a-b-c\"**","**\"b-c-d\"**"]

这里的问题是:我不想要双引号,即\“
所需输出:

vijay   ["a-b-c","a-c-d","a-d-c"]  

kumar   ["a-b-c","b-c-d"]

有什么理由不使用自定义serde来实现这一点吗。在mysql中有没有类似的东西?

djmepvbi

djmepvbi1#

我还遇到了同样的问题,因为我的字段用双引号括起来,用分号(;)分隔。我的表名是employee1。
所以我用链接搜索,找到了完美的解决方案。
@拉米塞蒂:是的,我们必须使用serde。请使用以下链接下载serde jar:https://github.com/downloads/illyayalovyy/csv-serde/csv-serde-0.9.1.jar
然后使用配置单元提示符执行以下步骤:

add jar path/to/csv-serde.jar;

create table employee1(id string, name string, addr string)
row format serde 'com.bizo.hive.serde.csv.CSVSerde'
with serdeproperties(
"separatorChar" = "\;",
"quoteChar" = "\"")
stored as textfile
;

然后使用以下查询从给定路径加载数据:

load data local inpath 'path/xyz.csv' into table employee1;

然后运行:

select * from employee1;

谢谢。

相关问题