咔片PPT · AI自动生成演示文稿,模板丰富、排版精美 讯飞智文 · 一键生成PPT和Word,高效应对学习与办公

在执行hive sql的时候,有时候你会发现导出数据到excel或者csv文档中的数值型的字段后四位变为了0,很多小伙伴在实际工作中都遇到过此问题,那么,这个问题该怎么解决呢?今天给大家讲解一下遇到导出到excel或者csv文档中的数值型的后4位变为0的解决方案。

一、场景:

小丸子在执行hql代码之后,将数据从数据库导出到csv文档中,打开表格后发现,表中的数值型字段的后4位都变为了0,很苦恼,不知道哪里操作不对,经过一番探索发现原因,具体如下:

代码:

select mall_created_time, creator, trade_id from temp.sales_order_temp where create_time >= '2021-06-01 00:00:00' and create_time <= '2021-06-30 23:59:59';

表格中交易号的后四位都变为了0,结果如下:

导出到表格中的结果

小丸子在第一次操作之后,以为自己哪个环节操作不对,重复试了几次,结果依然如此,改变了思路,经过一番探索,发现了出现这种情况的原因。

二、原因分析:

有时候从数据库导出数据到excel或者csv文档中时,字段的数值太长了,数值型的长编码的后4位会变为0。

三、解决方案:

将字段trade_id改写用concat(trade_id, 't')就可以解决了。

代码如下:

select mall_created_time, creator, concat(trade_id, 't') as trade_id from temp.sales_order_temp where create_time >= '2021-06-01 00:00:00' and create_time <= '2021-06-30 23:59:59';

结果如下:

查询结果

在实际操作中,遇到从数据库导出数据到excel或者csv文档中时,表格中的数值型的字段后时位变为了0,只需要用concat(数值型字段, 't')就可以解决了,如果还有什么其他的好方法,请留言交流,一起讨论,共同进步。