hivesql,serde如何不引用我的字段?

vbkedwbf  于 2021-06-28  发布在  Hive
关注(0)|答案(2)|浏览(372)

既然默认情况下serde引用字段by“,我怎么能不使用serde引用我的字段呢?
我试过:

row format serde "org.apache.hadoop.hive.serde2.OpenCSVSerde"
with serdeproperties(
"separatorChar" = ",",
"quoteChar" = "")

但我现在

FAILED: SemanticException java.lang.StringIndexOutOfBoundsException: String index out of range: 0
oxosxuxt

oxosxuxt1#

您可以通过指定 \u0000 作为引号字符。自 quoteChar 需要一个字符串,则应使用此unicode版本的 NULL .

ROW FORMAT SERDE
    "org.apache.hadoop.hive.serde2.OpenCSVSerde"
WITH SERDEPROPERTIES (
    "separatorChar" = ",",
    "quoteChar" = "\u0000")

此unicode为空 \u0000 是什么用的 CSV writer 类作为值 NO_QUOTE_CHARACTER : http://www.java2s.com/code/java/development-class/averysimplecsvwriterreleasedunderacommercialfriendlylicense.htm

3ks5zfa0

3ks5zfa02#

因为某种原因 "quoteChar" = "\u0000" 在尼马尔的回答中,我认为这对我不起作用。
保存到文件时,字段周围没有引号,我使用:

-- saving to file
INSERT OVERWRITE LOCAL DIRECTORY 'file:/home/sidazhou/temp' 
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' 
SELECT *
FROM temp_table
;

另外,我知道这不是被问到的问题,这与 ROW FORMAT SERDE 而不是 ROW FORMAT DELIMITED FIELDS .

相关问题