首页
学习
活动
专区
圈层
工具
发布

HIVE通过
EN

Stack Overflow用户
提问于 2017-10-30 23:49:56
回答 1查看 762关注 0票数 0

我已经从一个配置单元table.then导出了数据,我创建了另一个表来读取这些文件。我的目标外部配置子母表也需要看起来相同。当我导出数据时,数组字段如预期的那样具有'[]‘。但是,因为我的目标字段也是一个数组,所以它添加了额外的'[]‘。我使用了转义方式,但找不到同时转义'‘和'’字符的方法。我已经使用了:

代码语言:javascript
复制
ROW FORMAT DELIMITED
    FIELDS TERMINATED BY '\t' ESCAPED BY '['
    COLLECTION ITEMS TERMINATED BY '\,'
    MAP KEYS TERMINATED BY ':'  

并尝试了多个版本,例如

代码语言:javascript
复制
ESCAPED BY '[]', 
ESCAPED BY '[|]',
ESCAPED BY '[,]'

所有这些似乎只逃过了第一个字符。有没有办法对多个字符进行转义,或者有没有办法导出没有'[]‘的数组字段? characters.regexp_replace和translate函数对我不起作用。谢谢

源数组

'970x66','728x90','970x90','970x250','980x300','1200x300','970x418‘

需要目标数组:'970x66','728x90','970x90','970x250','980x300','1200x300','970x418‘

但它看起来没有转义[‘970x66’,'728x90','970x90','970x250','980x300','1200x300',‘970x418’]

EN

回答 1

Stack Overflow用户

发布于 2017-11-01 01:59:21

您可以使用concat_ws(string delimiter, array<string>)将数组转换为字符串并将其导出,而不是使用ESCAPED BY

代码语言:javascript
复制
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t' 
COLLECTION ITEMS TERMINATED BY '\,'
MAP KEYS TERMINATED BY ':'
SELECT 
      rest_of_columns,
      concat_ws(',',collect_set(cast(arrayfieldname) as string)) as array_field 
FROM 
      yourtable;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47019317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档