我必须将数据填充到一个以时间戳为数据类型的 Hive 表中。
引用这里的其他答案,我理解了创建一个数据类型为字符串的新表然后转换为 yyyy-mm-dd
的方法,因为我的格式是 mm/dd/yyyy
.
CREATE TABLE tbl_t (
t_id varchar(50),
c_date timestamp,
name varchar(25)
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t';
CREATE TABLE tbl_s (
t_id varchar(50),
c_date string,
name varchar(25)
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t';
我填充了 tbl_s
aa 11/08/1994 hhh
ss 11/09/2011 bbb
mm 09/07/2000 qqq
select t_id
, from_unixtime(unix_timestamp(c_date ,'MM/dd/yyyy'),'yyyy-MM-dd')
, name
from tbl_s;
这很好用。现在我需要填充我的原始表。 使用查询:
insert into table tbl_t
select t_id
, from_unixtime(unix_timestamp(c_date ,'MM/dd/yyyy'),'yyyy-MM-dd')
, name
from tbl_s;
然后
select * from tbl_t;
返回
aa NULL hhh
ss NULL bbb
mm NULL qqq
为什么时间戳列为空?
最佳答案
在 from_unixtime 函数中不需要额外的参数 'yyyy-MM-dd'。
insert into table tbl_t select t_id,from_unixtime(unix_timestamp(c_date ,'MM/dd/yyyy')),name from tbl_s;
关于hadoop - 将配置单元中的数据从一个表插入到另一个表,以便将 mm/dd/yyyy 转换为配置单元时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37477003/