如何连接所有表格'列为分隔格式,不分别指定每列

时间:2017-03-14 21:59:32

标签: sql hadoop hive apache-spark-sql hiveql

E.g。

给定一个只有原始类型的表,例如 -

550px

...和create table t (i int, dt date, str string, ts timestamp, bl boolean) ; insert into t select 1,date '2017-03-14','Hello world',timestamp '2017-03-14 14:37:28.889',true ; select * from t ; +-----+------------+-------------+-------------------------+------+ | t.i | t.dt | t.str | t.ts | t.bl | +-----+------------+-------------+-------------------------+------+ | 1 | 2017-03-14 | Hello world | 2017-03-14 14:37:28.889 | true | +-----+------------+-------------+-------------------------+------+ 作为请求的分隔符
(为简单起见,我们可以假设它不会出现在数据中的任何地方)

请求的结果将是单个分隔的字符串

  

1 ||| 2017-03-14 ||| Hello world ||| 2017-03-14 14:37:28.889 ||| true

1 个答案:

答案 0 :(得分:0)

此解决方案仅限于包含" primitive"仅类型(没有结构,数组,地图等)。

|||
  

1 ||| 2017-03-14 ||| Hello world ||| 2017-03-14 14:37:28.889 ||| true

P.S。

select printf(concat('%s',repeat('|||%s',field(unhex(1),*,unhex(1))-2)),*) from t ; 有效,但值不是用分隔符分隔的 concat(*)会产生异常。