前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Greenplum转换DATE数据类型问题

Greenplum转换DATE数据类型问题

原创
作者头像
小徐
修改2018-10-23 17:21:39
2.3K0
修改2018-10-23 17:21:39
举报
文章被收录于专栏:GreenplumGreenplum

Greenplum转换DATE数据类型问题 1

1 场景概述 1

2 查看外表时的错误 1

3 问题解答思路 2

3.1 修改外表字段类型 2

3.2 把外表映射成内表 2

3.3 修改内表类型 2

3.4 把内表修改成DATE类型 3

1 场景概述

在工作中使用Greenplum外表时发现date类型中有null或空值,外表不识别类型,问题解答思路,先使用varchar类型把外表的数据加载到Greenplum,在使用数据类型转化转化为date即可。

2 查看外表时的错误

[SQL]select * from test_external limit 100;

NOTICE:  Found 8833 data formatting errors (8833 or more input rows). Rejected related input data.

[Err] ERROR:  All 1000 first rows in this segment were rejected. Aborting operation regardless of REJECT LIMIT value. Last error was: invalid input syntax for type date: "null", column candate  (seg17 slice1 192.168.209.14:40001 pid=417285)

DETAIL:  External table xiaoxu_temp, line 1000 of gphdfs://nameservice1/tmp/*****/***_all/*, column candate

以上问题是在查询外表时遇到了数据类型date为null的数值

3 问题解答思路

3.1 修改外表字段类型

在创建外表语句时把candate字段的类型修改成varchar

3.2 把外表映射成内表

把外表的数据复制到内表中,映射语句如下:

create table temp_internal with (appendonly = true, compresstype = zlib, compresslevel = 5

,orientation=column) as

select * from test_external

Distributed by (id)

3.3 修改内表类型

update  test_external  set candate=null where candate ='null' or length(candate)=0;

以上语句是把内表中candate是null或空修改成null , 效果如下

3.4 把内表修改成DATE类型

以下语句是先把candate转换为carchar再转换为date

alter table test_external alter column "candate" type date using ("candate"::VARCHAR::date);

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 场景概述
  • 2 查看外表时的错误
  • 3 问题解答思路
    • 3.1 修改外表字段类型
      • 3.2 把外表映射成内表
        • 3.3 修改内表类型
          • 3.4 把内表修改成DATE类型
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档