有没有办法在greenplum中创建外部表创建中的一个字符串的替换。

时间:2015-04-23 05:55:56

标签: hive greenplum

我需要为hdfs位置创建外部表。对于少数字段,数据具有null而不是空白空间。如果这些字段的字段长度小于4,则在选择数据时会抛出错误。有没有办法用自己创建表时用空格来定义所有这些空值的替换。?

我在greenplum尝试它,只是标记了蜂巢,看看在蜂房中可以为这些案例做些什么。

2 个答案:

答案 0 :(得分:0)

您可以使用序列化属性将NULL字符串映射为空字符串。

  CREATE TABLE IF NOT EXISTS abc ( ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE TBLPROPERTIES ("serialization.null.format"="")

在这种情况下,当您从配置单元中查询它时,您将获得该字段的空值,而hdfs将具有" \ N"。

或者

如果您想表示空字符串而不是' \ N',您可以使用COALESCE函数:

 INSERT OVERWRITE tabname SELECT NULL, COALESCE(NULL,"") FROM data_table;

答案 1 :(得分:0)

问题的答案是在greenplum的create table语法中使用NULL作为'null'语句。正如我所提到的,我想从蜂巢中遇到这些问题的人那里获得一些投入。所以我也标记了蜂巢。但是,greenplum外部表语法支持NULL AS短语,我们可以在其中指定要保留的NULL形式。