我已经从一个配置单元table.then导出了数据,我创建了另一个表来读取这些文件。我的目标外部配置子母表也需要看起来相同。当我导出数据时,数组字段如预期的那样具有'[]‘。但是,因为我的目标字段也是一个数组,所以它添加了额外的'[]‘。我使用了转义方式,但找不到同时转义'‘和'’字符的方法。我已经使用了:
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t' ESCAPED BY '['
COLLECTION ITEMS TERMINATED BY '\,'
MAP KEYS TERMINATED BY ':' 并尝试了多个版本,例如
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’]
发布于 2017-11-01 01:59:21
您可以使用concat_ws(string delimiter, array<string>)将数组转换为字符串并将其导出,而不是使用ESCAPED BY
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;https://stackoverflow.com/questions/47019317
复制相似问题